是否可以使用Reactive Extensions(Rx)在.NET 3.5中创建执行并行化的应用程序,还是以某种方式限制?我从这里http://www.microsoft.com/download/en/confirmation.aspx?id=26649下载了Rx,在创建了一个带引用的反应式程序集的简单项目之后,我找不到与.NET 4.0中的Tasks相对应的任何类。我正在尝试为“任务”找到课程,但唉,我找不到任何课程。我做错了吗?
答案 0 :(得分:5)
正如这里提到的那样,您可以在旧的System.Threading.dll
安装中找到反向移植的Rx
。
为了更容易整合,我已经制作了一个nuget(称为 TaskParallelLibrary )。
答案 1 :(得分:4)
据我所知,包含“the back ported standalone DLL named System.Threading.dll”的最新版本的Reactive Extensions已于2011年2月11日发布Reactive Extensions (Rx) v1.0.2856.0(在Rx_Net35.msi中)。
(我实际上已经将它作为Rx_Net35.v1.0.2856.0.msi,在5月份下载,我想从CodePlex获取;再也找不到了......它在我的64上安装为C:\Program Files (x86)\Microsoft Cloud Programmability\Reactive Extensions\v1.0.2856.0\Net35\System.Threading.dll
比特系统。)
答案 2 :(得分:3)
System.Threading,TPL的程序集曾经包含在Rx版本中,但不再是。
您可以在旧版本中找到它。
也就是说,IObservable<T>
类似于Task<T>
,其关键区别是Task<T>
只能有1个结果,IObservable<T>
是0的流或者更多结果。
答案 3 :(得分:1)
也许samples from the rx wiki可以帮到你。
最简单的后台任务是:
var o = Observable.Start
(
() =>
{
Console.WriteLine("Calculating...");
Thread.Sleep(3000);
Console.WriteLine("Done.");
}
);
o.First(); // subscribe and wait for completion of background operation
但您可能还想查看forkjoin示例。
答案 4 :(得分:1)
.NET 3.5中的Rx不能使用任务,它使用.NET 3.5线程池 - 但是,正如Scott所说,当IObservable是一个项目时,IObservable就像Task一样。
答案 5 :(得分:1)
如果我错了,请纠正我。
观察者和观察者主要与任务有关 - 观察(等待数据)&amp;订阅(观察者获取被推送的数据)。
Observable提供了两个运算符来提高上述两项任务的性能。
1)。 Observable.ObserveOn - 在指定的调度表上异步通知观察者。 可以使用Schedular以更好的方式执行任务,其中它接受
的参数同样适用于第二个......
2)。 Observable.SubscribeOn - 异步订阅 - 取消订阅指定调度程序上的观察者。
它也有与上述相同的选项来安排订阅。
因此,Rx提供内置功能来安排您的流程以提供快速结果。