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

最新文章

  1. Android 权限列表
  2. jQuery-H5-css3转盘抽奖-遁地龙卷风
  3. Memcached(1)-----基本介绍
  4. Android SDK content Loader has encountered a problem.parseSdkContent failed
  5. 制作Linux下程序安装包——使用脚本打包bin、run等安装包
  6. 在C#中使用WIA获取扫描仪数据
  7. vue2.0版cnode社区项目搭建及实战开发
  8. css层叠样式初学
  9. Qt中实现启动画面
  10. IDEA解决SVN更新冲突
  11. POJ 1741 Tree(点分治点对<=k)
  12. Java知多少(36)内部类及其实例化
  13. centos7 挂载磁盘设置开机自启动
  14. python 26个技巧
  15. Ubuntu16.4下QT配置opencv3.1+FFmpeg
  16. Win8 下配置Java开发环境
  17. string 与 char 的区别
  18. oracle 不能是用变量来作为列名和表名 ,但使用动态sql可以;
  19. LeetCode560. Subarray Sum Equals K
  20. 【谁知道C#字段为什么用属性封装?】

热门文章

  1. 迭代器,生成器,yield,yield from理解
  2. [轉]Reverse a singly linked list
  3. [FW]CLONE_NEWUSER trickery: CVE-2013-1858
  4. FZU 2079 最大获利(线段树+DP)
  5. Codeforces 488C Fight the Monster
  6. 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL
  7. Linux面试基础(一)
  8. 使用Hystrix实现断路器处理
  9. 在AndroidStudio2.3.2下JNI开发的详细步骤(转)
  10. JMeter 常用网站