一、SynchronizationContext顧名思義是同步上下文的意思。利用此對象可以實現線程間數據的同步、異步訪問。
二、例子
class Program { static Thread _workThread; static SynchronizationContext _mainThreadSynContext; static void Main(string[] args) { _mainThreadSynContext = SynchronizationContext.Current; if (_mainThreadSynContext == null) { _mainThreadSynContext = new SynchronizationContext(); } _workThread = new Thread(new ThreadStart(DoWork)); _workThread.Start(); Console.ReadLine(); } static void DoWork() { int a = 10; _mainThreadSynContext.Post(new SendOrPostCallback(ThreadCallBack),a); } static void ThreadCallBack(object state) { Console.WriteLine((int)state); Console.ReadLine(); } }
三、需要特別注意的是
SynchronizationContext.Current可能獲取到的是空
此時應該:
if (_mainThreadSynContext == null) { _mainThreadSynContext = new SynchronizationContext(); }