use*_*225 6 .net multithreading system.reactive c#-4.0
我只是想异步检索数据,并在检索数据后,在UI(Winforms)中显示它.
使用.net 4.0,有两种方法可以实现这个(我知道还有更多,但我使用这两种方式):
var task = Task.Factory.StartNew(() => RetrieveData());
task.ContinueWith(x => SetDataInUi(x.Result), TaskScheduler.FromCurrentSynchronizationContext());
Run Code Online (Sandbox Code Playgroud)
要么
var obs = Observable.Start(() => RetrieveData());
obs.ObserveOn(SynchronizationContext.Current).Subscribe(x => SetDataInUi(x));
Run Code Online (Sandbox Code Playgroud)
据我所知,这些都会做同样的事情.是否有理由选择其中一个?
小智 5
如果您只是想从某个地方请求数据并将其打印到屏幕上,我宁愿选择第一个解决方案.
第二个也可以工作,但RX旨在帮助您处理数据流.我们都同意,当你可以使用一个简单的解决方案时,使用复杂的解决方案并不酷