Stephen Toub blogged是是什麼的SynchronizationContext和的TaskScheduler
雙方的SynchronizationContext和的TaskScheduler是抽象, 代表「調度」,你給一些工作的東西,它 決定何時何地之間的概念差別運行那項工作。調度器有許多不同的形式。例如,ThreadPool是一個調度程序:調用ThreadPool.QueueUserWorkItem來提供一個委託來運行, 委託隊列,並且一個ThreadPool的線程最終 接收並運行該委託。您的用戶界面還有一個調度程序:消息泵。
所以System.Reactive.Concurrency.EventLoopScheduler
,Dispatcher,ThreadPool,TaskScheduler,SyncrhonizationContext和IScheduler implementations of Reactive Extensions是在這個意義上所有的 「調度」。
他們有什麼區別?
他們爲什麼都需要?我想我得到EventLoop,Dispatcher,ThreadPool。 IScheduler也很好地解釋。
但是TaskScheduler和SyncrhonizationContext仍然不清楚。
Stephen Cleary's excellent article解釋SyncrhonizationContext,我想我明白了。那麼爲什麼我們需要TaskScheduler,目前還不清楚。
請解釋或指出來源。
可能有很多原因,如答案所示。另一個未提及的我在這個MSDN中發現博客文章: http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259082.aspx 它表示,SyncrhonizationContext.Post異步方法不會在工作項執行時提供通知。文章建議如何添加一個使用TaskCompletionSource返回任務的擴展方法 – 2012-03-06 19:37:32