C#跨线程访问(一) ---- SynchronizationContext
2024-09-06 05:39:43
一、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();
}
最新文章
- Android 权限列表
- jQuery-H5-css3转盘抽奖-遁地龙卷风
- Memcached(1)-----基本介绍
- Android SDK content Loader has encountered a problem.parseSdkContent failed
- 制作Linux下程序安装包——使用脚本打包bin、run等安装包
- 在C#中使用WIA获取扫描仪数据
- vue2.0版cnode社区项目搭建及实战开发
- css层叠样式初学
- Qt中实现启动画面
- IDEA解决SVN更新冲突
- POJ 1741 Tree(点分治点对<;=k)
- Java知多少(36)内部类及其实例化
- centos7 挂载磁盘设置开机自启动
- python 26个技巧
- Ubuntu16.4下QT配置opencv3.1+FFmpeg
- Win8 下配置Java开发环境
- string 与 char 的区别
- oracle 不能是用变量来作为列名和表名 ,但使用动态sql可以;
- LeetCode560. Subarray Sum Equals K
- 【谁知道C#字段为什么用属性封装?】
热门文章
- 迭代器,生成器,yield,yield from理解
- [轉]Reverse a singly linked list
- [FW]CLONE_NEWUSER trickery: CVE-2013-1858
- FZU 2079 最大获利(线段树+DP)
- Codeforces 488C Fight the Monster
- 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL
- Linux面试基础(一)
- 使用Hystrix实现断路器处理
- 在AndroidStudio2.3.2下JNI开发的详细步骤(转)
- JMeter 常用网站