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();
                }
  • 相关阅读:
    Shared variable in python's multiprocessing
    File checksum
    Windows createprocess linux fork
    人工调用系统调用
    如何提高团队开发效率
    Redis' High Availability
    并发MD5计算方法
    开博宣言
    NYOJ 55 懒省事的小明
    HDU 1237 简单计算器
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/11928780.html
Copyright © 2011-2022 走看看