Почему 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);