C#跨線程訪問(一) ---- SynchronizationContext


一、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();
            }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM