2009-11-10 35 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

相关问题