Почему SynchronizationContext.Current пусто в моем приложении Winforms?

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

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

но System.Threading.SynchronizationContext.Current является нулевым

2 ответа

Решение

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

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

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

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

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

private SynchronizationContext synchronizationContext;

В потоке пользовательского интерфейса (основной поток)

synchronizationContext = System.Threading.SynchronizationContext.Current;

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

synchronizationContext.Post(    
   state => DoUpdateInUIThread((Abc)state),     
   abc);
Другие вопросы по тегам