我只是写了这个代码:为什么我的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