2009-11-10 34 views

回答

15

this explanation

SynchronizationContext.Current僅在主線程設置(這是你實際上並不需要它的唯一線程)

博客文章提出了一種解決方法。

+0

好的解決方法! – psulek 2011-06-06 10:20:47

18

爲了得到它的工作。

在你的類

private SynchronizationContext synchronizationContext; 

UI線程(主線程)

synchronizationContext = System.Threading.SynchronizationContext.Current; 

在工作線程

synchronizationContext.Post( 
    state => DoUpdateInUIThread((Abc)state),  
    abc); 
+0

syncronizationContext如何在工作線程中實例化或傳遞給工作線程? – Tim 2013-06-02 01:46:56

+0

假設您在表單中使用了「BackgroundWorker」。如果您在構造函數中保存'SynchronizationContext.Current'或將事件作爲類級變量保存,則可以在'RunWorkerCompleted'處理程序中訪問。或者,如果您在另一個課程(如演示者)中完成工作,則可以在UI線程上創建演示者,並在構造函數中保存上下文。 – 2013-06-20 19:20:05

相關問題