Подтвердить что ты не робот

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

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

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

но System.Threading.SynchronizationContext.Current имеет значение null

4b9b3361

Ответ 1

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

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

Сообщение в блоге предлагает обходное решение.

Ответ 2

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

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

private SynchronizationContext synchronizationContext;

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

synchronizationContext = System.Threading.SynchronizationContext.Current;

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

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