2011-12-22 80 views
1

當方法調度在其他線程中執行時,我會在指定線程中執行嗎?可以在BG線程的主線程中調用方法,在事件調用列表中間執行嗎?

當我的主線程從事件調用列表中調用函數時,以及事件調用列表方法之間的某處是否執行其他線程的方法(不是列表的一部分)時,會出現這種情況嗎?因此,如果我想確保某些對象在事件調用期間未被修改,那麼即使在單線程中完成所有修改時,我也需要使用一些Busy屬性,因爲可以注入來自其他線程的方法在我的線程中,並在事件調用期間修改此對象?

回答

1

我想你指的是具有一個動作隊列的調度執行,然後試圖通過BeginInvoke從另一個線程執行別的東西。在這種情況下,根據MSDN,該操作被添加到分派器隊列中,這表明事實上在之前的待處理動作完成之後執行。

說了這話之後,請注意BeginInvoke有指定優先級的重載,所以有可能以後排隊的動作比早先排隊的較低優先級的動作更早執行它。

相關問題