为什么我的Winforms应用程序中的SynchronizationContext.Current为null?

时间:2009-11-10 17:06:40

标签: c# winforms multithreading synchronizationcontext

我刚写了这段代码:

System.Threading.SynchronizationContext.Current.Post(
    state => DoUpdateInUIThread((Abc)state), 
    abc);

但System.Threading.SynchronizationContext.Current为null

2 个答案:

答案 0 :(得分:20)

让它发挥作用。

在你的班级

private SynchronizationContext synchronizationContext;

UI线程(主线程)

synchronizationContext = System.Threading.SynchronizationContext.Current;

在工作线程中

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

答案 1 :(得分:16)

this explanation

  

SynchronizationContext.Current只在主线程中设置(这是你实际上不需要它的唯一线程)

博客文章提出了一种解决方法。