注意到 System.Threading.ExecutionContext这个类网上也找了,MSDN的例子也看了,还是不知到 它的具体用处是什么?MSDN上的例子说明其一般是这样用的:...
ExecutionContext.Run(ExecutionContext.Captcher(),(o)=>{/*...*/},null); //.... A处若A处在 主线程 中那么这个东西 没什么特别的若把它放到 辅助线程中,那么 与不放它是一下的也起不到效果
如下所示:var v=ExecutionContext.Captcher();
Thread t=new Thread(()=>{
ExecutionContext.Run(v,(o)=>{/*.B.*/},null); //若想在B 处 操作UI 控件 一样 报错 不行
});
t.Start();//现在我就想知到 这个ExecutionContext 直译为执行上下文 对象怎么个用法...
ExecutionContext.Run(ExecutionContext.Captcher(),(o)=>{/*...*/},null); //.... A处若A处在 主线程 中那么这个东西 没什么特别的若把它放到 辅助线程中,那么 与不放它是一下的也起不到效果
如下所示:var v=ExecutionContext.Captcher();
Thread t=new Thread(()=>{
ExecutionContext.Run(v,(o)=>{/*.B.*/},null); //若想在B 处 操作UI 控件 一样 报错 不行
});
t.Start();//现在我就想知到 这个ExecutionContext 直译为执行上下文 对象怎么个用法...
换句话说,一个ExecutionContext对象描述一个逻辑线程。在一个线程中,可以使用多个ExecutionContext对象实现多任务,这种多任务与多线程类似,差别主要在于多线程是由系统调度,在多处理器环境下可以同时运行,而这种方式需要自己调度,同一时刻只能运行一个任务。
至于它的作用,包括安全上下文、调用上下文和同步上下文。好比局域网访问其它人的电脑,如果用户名密码和你本机登录的一致,就不需要你输入用户名密码访问了(排除匿名访问),这时就是用了安全上下文自动做到了其它计算机的访问。
Thread t=new Thread(()=>{
SynchronizationContext.Current.Post((c)=>{操作控件},null);
});
t.Start(); 使用执行上下文:
var v=ExecutionContext.Captcher();
Thread t=new Thread(()=>{
ExecutionContext.Run(v,(o)=>{SynchronizationContext.Current.Post((c)=>{操作控件},null);},null);
});
t.Start();
看看有什么区别。
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
后一个没看懂象是多此一举,说半天就是没明白Run所能带来的 作用... 我觉得Run应该象SynchronizationContext.Current.Post,有跨线程的作用,就是把当前主线程的上下文传给 创建线程时
可以保证创建线程正确的使用 (比如类级别的变量)主线程中的资源,(上下文).