什么时候会select在TPL上使用Rx还是两个框架是正交的? 据我所知,Rx主要是为了提供对事件的抽象,允许合成,但它也允许提供对asynchronous操作的抽象。 使用Createxx重载和Fromxxx重载并通过处置IDisposable返回取消。 TPL还通过任务和取消function提供了操作抽象。 我的困境是什么时候使用哪个和哪些场景?
编辑:感谢链接到维基,我认为,因为它已经开始在那里,更容易去那里检查出来。 然而,这里的问题也很好,所以不在MSDN论坛的人们会了解到这个wiki以及它在哪里。 简短的问题: 你有Rx代码示例可以帮助人们更好地理解它吗? 漫无边际的问题: 现在Rx框架已经发布了,我认为我们中的很多人都有兴趣获得和尝试。 可悲的是,真的没有太多的例子(经过详尽的search,我几乎相信Rx只是为了方便地拖动WPF应用程序)。 我不记得我读过或听过的是什么(我一直在看许多博客和video)Rx团队似乎对101系列感兴趣……当他们有足够的时间去做…对于那些想要了解它并现在玩的人来说,这真的很糟糕(我的意思是,当一个新技术出现时,什么自我推崇的开发者不会觉得自己像一个玩具的孩子) 。 我个人现在正在尝试,但哇哇哇哇哇中有一些疯狂的概念…只是有像Materialize和Zip方法名称让我想起传送者和东西从回到未来 。 所以,我认为如果那些理解力更强的人帮助build立一些例子,从基本的用法到更复杂的东西,几乎涵盖所有的方法和它们的使用,一个实用的方法(也许也有一些理论,特别是因为这些概念可能需要它) 我认为,MS开发人员花时间给我们提供这样的资料非常棒,但是我也认为这个社区已经足够好了,开始构build我们自己的材料,不是吗?
我想用c#在Windows窗体应用程序中每分钟(按时钟)做东西。 我只是想知道什么是最好的方式去呢? 我可以使用一个定时器,并将其间隔设置为60000,但为了让它在一分钟内运行,我将不得不在一分钟内启用它,而不是真正可行的。 我可以使用一个计时器,并将其间隔设置为1000.然后在其tick事件中,我可以检查时钟当前分钟对我设置的variables,如果分钟已经改变,然后运行我的代码。 这让我很担心,因为我正在每隔1秒钟让计算机做一次检查,以便每1分钟执行一次工作。 当然这很难看? 我正在使用Windows窗体和.Net 2.0,所以不想使用.Net 3.5自带的DispatchTimer 这一定是一个相当普遍的问题。 有没有更好的方法来做到这一点?
微软向.NET Framework 4引入了BCL的IObservable<T>接口 ,我想,“好极了,我必须使用它!” 所以我深入挖掘并阅读文章和文档,甚至实施了这个模式。 这样做后,我意识到,基本的实现实际上发送所有的T事件到所有的用户没有任何过滤, 即普通广播。 我在某处读到Observable模式是为了普通广播。 我觉得这不是真的,我错过了一些东西。 我的问题: 如果我添加一个过滤机制,使用Observable模式和使用纯CLR事件有什么区别? 什么时候应该使用这种模式,什么时候应该select使用简单的CLR事件? Observable模式的主要优点是什么?
Reactive Extensions提供了很多帮助方法来将现有事件和asynchronous操作转化为observable,但是如何从头开始实现一个IObservable <T>? IEnumerable具有可爱的yield关键字,使其实现起来非常简单。 实现IObservable <T>的正确方法是什么? 我需要担心线程安全吗? 我知道有支持在特定的同步上下文callback,但这是我作为一个IObservable <T>作者需要担心或这种内置? 更新: 这是我的C#版本的布赖恩的F#解决scheme using System; using System.Linq; using Microsoft.FSharp.Collections; namespace Jesperll { class Observable<T> : IObservable<T>, IDisposable where T : EventArgs { private FSharpMap<int, IObserver<T>> subscribers = FSharpMap<int, IObserver<T>>.Empty; private readonly object thisLock = new object(); private int key; private bool isDisposed; public void Dispose() { Dispose(true); […]
我想知道新的C#5.0asynchronousfunction对于Rx – Reactive Extensions是什么意思? 它似乎不是替代品,但似乎重叠 – Task和IObservable 。 编辑: 任务与IObservable:何时使用什么?
我们有一个客户打电话到TIBCO的EMS队列,并接线这样的事件: var msgConsumer = _session.CreateConsumer(responseQueue); var response = Observable.FromEvent<EMSMessageHandler,EMSMessageEventArgs> (h => msgConsumer.MessageHandler += h, h => msgConsumer.MessageHandler -= h) .Where(arg => arg.Message.CorrelationID == message.MessageID); 当我调用response.Subscribe(…)我得到System.ArgumentException“错误绑定到目标方法”。 我可以使它与Observable.FromEventPattern<EMSMessageEventArgs>(msgConsumer, "MessageHandler")但是它将事件作为一个string,而不是干净。 另外我有IObservable<EventPattern<EMSMessageEventArgs>>而不是IObservable<EMSMessageEventArgs> 我想了解的是:什么时候应该使用FromEvent覆盖FromEventPattern ? 这似乎有点反复试验。
我对Reactive Extensions非常感兴趣,但是我找不到最新的教程。 我开始使用Reactive Extensions for .NET来固化asynchronous蓝色,但它已经过时了。 我可以找出一些变化,但我无法得到很多的例子工作。 我在网上发现了很多文章,主要是2009,2010,但是它们也与当前版本不兼容。 我对使用Windows Phone和WebClient的Rx特别感兴趣: WebClient wc = new WebClient(); var o = Observable.FromEvent<DownloadStringCompletedEventArgs>(wc, "DownloadStringCompleted").Select(newString => newString.EventArgs.Result); // Subscribe to the observable, and set the label text o.Subscribe(s => myLabel.Text = s); // Start the download wc.DownloadStringAsync(new Uri("http://www.data.com/service")); 不再工作了,用FromEvent代替FromEventPattern是不够的。 有人可以指点我一个最新的资源?
我刚刚发现了SubscribeOn ,这让我想知道是不是应该使用ObserveOn 。 谷歌把我带到这里和这里 ,但没有帮助我挖掘其中的差异:它似乎非常微妙。 (在我的上下文中,我已经在非gui线程上发生了事件,并且在使用事件数据更新控件之前,我需要切换到gui线程)。
我了解Rx的基础知识。 我正在挣扎的是如何实际使用这个超越学术的例子? 什么是一些常见的,简单的现实世界的场景,其中Rx比我们今天在.NET中有更好的解决scheme?