我只是寫了這個代碼:爲什麼我的Winforms應用程序中SynchronizationContext.Current爲null?
System.Threading.SynchronizationContext.Current.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
但System.Threading.SynchronizationContext.Current是空
我只是寫了這個代碼:爲什麼我的Winforms應用程序中SynchronizationContext.Current爲null?
System.Threading.SynchronizationContext.Current.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
但System.Threading.SynchronizationContext.Current是空
爲了得到它的工作。
在你的類
private SynchronizationContext synchronizationContext;
在UI線程(主線程)
synchronizationContext = System.Threading.SynchronizationContext.Current;
在工作線程
synchronizationContext.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
syncronizationContext如何在工作線程中實例化或傳遞給工作線程? – Tim 2013-06-02 01:46:56
假設您在表單中使用了「BackgroundWorker」。如果您在構造函數中保存'SynchronizationContext.Current'或將事件作爲類級變量保存,則可以在'RunWorkerCompleted'處理程序中訪問。或者,如果您在另一個課程(如演示者)中完成工作,則可以在UI線程上創建演示者,並在構造函數中保存上下文。 – 2013-06-20 19:20:05
好的解決方法! – psulek 2011-06-06 10:20:47