线程通讯(SynchronizationContext )

今天看公司其它同事写的代码中用到了SynchronizationContext,看完注释也没明白是什么东东(本人是个入门者,需要充电的地方太多了委屈),所以特别在网上查了下,原来是这么个东西:一个线程和另外一个线程进行通讯时,SynchronizationContext在通讯中充当了个传输者的角色。


先借用下先辈们的例子:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    // let's check the context here
    var context = SynchronizationContext.Current;
    if (context == null)
        Console.WriteLine("No context for this thread");
    else
        Console.WriteLine("We got a context");

    // create a form
    Form1 form = new Form1();

    // let's check it again after creating a form
    context = SynchronizationContext.Current;

    if (context == null)
        Console.WriteLine("No context for this thread");
    else
        Console.WriteLine("We got a context");

    if (context == null)
        Console.WriteLine("No context for this thread");

    Application.Run(new Form1());
}
运行结果:
1、No context for this thread
2、We got a context
从运行结果来看,在Form1 form = new Form1()之前,SynchronizationContext对象是为空,而当实例化Form1窗体后,SynchronizationContext对象就被附加到这个线程上了。所以可以得出答案了:当Control对象被创建的同时,SynchronizationContext对象也会被创建并附加到线程上。

如何使用SynchronizationContext

相关链接:

                  http://www.cnblogs.com/Kevin-moon/archive/2009/01/13/1374353.html

                  http://blog.csdn.net/iloli/article/details/16859605







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值