Ответ 1
См. это объяснение.
SynchronizationContext.Current устанавливается только в основном потоке (который является единственным потоком, в котором он действительно не нужен)
Сообщение в блоге предлагает обходное решение.
Я просто написал этот код:
System.Threading.SynchronizationContext.Current.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
но System.Threading.SynchronizationContext.Current имеет значение null
См. это объяснение.
SynchronizationContext.Current устанавливается только в основном потоке (который является единственным потоком, в котором он действительно не нужен)
Сообщение в блоге предлагает обходное решение.
Чтобы заставить его работать.
В вашем классе
private SynchronizationContext synchronizationContext;
В потоке пользовательского интерфейса (основной поток)
synchronizationContext = System.Threading.SynchronizationContext.Current;
В рабочем потоке
synchronizationContext.Post(
state => DoUpdateInUIThread((Abc)state),
abc);