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

Ian*_*ose 20 c# multithreading winforms synchronizationcontext

我刚写了这段代码:

System.Threading.SynchronizationContext.Current.Post(
    state => DoUpdateInUIThread((Abc)state), 
    abc);
Run Code Online (Sandbox Code Playgroud)

但System.Threading.SynchronizationContext.Current为null

Ian*_*ose 20

让它工作.

在你的班上

private SynchronizationContext synchronizationContext;
Run Code Online (Sandbox Code Playgroud)

UI线程(主线程)

synchronizationContext = System.Threading.SynchronizationContext.Current;
Run Code Online (Sandbox Code Playgroud)

在工作线程中

synchronizationContext.Post(    
   state => DoUpdateInUIThread((Abc)state),     
   abc);
Run Code Online (Sandbox Code Playgroud)


Mar*_*lin 16

看到这个解释.

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

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