zoukankan      html  css  js  c++  java
  • 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();
                }
  • 相关阅读:
    substr函数
    Oracle 日期处理
    translate函数使用
    nvl函数
    random随机函数
    case语句
    列的拼接
    并行HASH JOIN小表广播问题
    WITH AS 优化逻辑读
    【hihoCoder挑战赛28 A】异或排序
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/11928780.html
Copyright © 2011-2022 走看看