【发布时间】:2012-02-09 18:05:28
【问题描述】:
我只是想异步检索数据,检索数据后,将其显示在 UI(Winforms)中。
使用 .net 4.0,有两种方法可以实现(我知道还有更多,但我正在使用这两种):
var task = Task.Factory.StartNew(() => RetrieveData());
task.ContinueWith(x => SetDataInUi(x.Result), TaskScheduler.FromCurrentSynchronizationContext());
或
var obs = Observable.Start(() => RetrieveData());
obs.ObserveOn(SynchronizationContext.Current).Subscribe(x => SetDataInUi(x));
据我所知,它们都会做同样的事情。有理由选择其中一个吗?
【问题讨论】:
-
可能是错误的,但我认为您可以将
() => RetrieveData()替换为RetrieveData。同样将x => SetDataInUi(x)替换为SetDataInUi。 -
@Domenic - 有可能,但我必须明确调用 StartNew
标签: .net multithreading c#-4.0 system.reactive