I just wrote this code:
System.Threading.SynchronizationContext.Current.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
but System.Threading.SynchronizationContext.Current is null
I just wrote this code:
System.Threading.SynchronizationContext.Current.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
but System.Threading.SynchronizationContext.Current is null
See this explanation.
SynchronizationContext.Current is only set in the main thread (which is the only thread where you don't actually need it)
The blog post proposes a workaround.
To get it to work.
In your class
private SynchronizationContext synchronizationContext;
In the UI thread (main thread)
synchronizationContext = System.Threading.SynchronizationContext.Current;
In the worker thread
synchronizationContext.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
BackgroundWorker
in your form. If you save off SynchronizationContext.Current
in your constructor or load event as a class level variable, it'll be accessible in the RunWorkerCompleted
handler. Alternatively, if you're doing the work in another class, like a presenter, you could create the presenter on the UI thread and save off the context in the constructor. –
Zolazoldi See this explanation.
SynchronizationContext.Current is only set in the main thread (which is the only thread where you don't actually need it)
The blog post proposes a workaround.
© 2022 - 2024 — McMap. All rights reserved.