Почему SynchronizationContext.Current пусто в моем приложении Winforms? - PullRequest
20 голосов
/ 10 ноября 2009

Я только что написал этот код:

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

но System.Threading.SynchronizationContext.Current равен нулю

Ответы [ 2 ]

20 голосов
/ 10 ноября 2009

Чтобы заставить его работать.

В вашем классе

private SynchronizationContext synchronizationContext;

В потоке UI (основной поток)

synchronizationContext = System.Threading.SynchronizationContext.Current;

В рабочем потоке

synchronizationContext.Post(    
   state => DoUpdateInUIThread((Abc)state),     
   abc);
16 голосов
/ 10 ноября 2009

См. это объяснение .

SynchronizationContext.Current устанавливается только в главном потоке (который является единственным потоком, в котором он на самом деле не нужен)

В блоге предлагается обходной путь.

...