2012-07-09 34 views
4

請原諒我,如果這是一個簡單的問題;我無法用一種足夠通用的方式來搜索答案。繼續在主線程上執行任務

考慮以下代碼:

var task = Task.Factory.StartNew(() => Whatever()); 
task.ContinueWith(Callback, TaskScheduler.FromCurrentSynchronizationContext()) 

究竟它是如何決定的,當回調方法將執行?

它會等到主線程完成任何操作,或者在異步調用完成後立即調用主線程嗎?這個回調會在主線程返回到之前的任何操作之前完全執行嗎?

回答

8

它會等到主線程完成任何操作,或者在異步調用完成後立即調用主線程嗎?

當異步調用完成時,延續將爲定時。該調度的效果取決於調度程序(當然),但對於「正常」的WPF或Windows窗體消息循環,我期望它的調度方式類似於調用Control.BeginInvokeDispatcher.BeginInvoke - 換句話說,當「主」線程完成了在此之前計劃的其餘任務時。

我不希望主線程奇蹟般地停止它正在執行的操作並執行延續。但是,可能會使將其繼續作爲其隊列中的高優先級任務。

+0

非常感謝! – user981225 2012-07-09 14:52:40

相關問題