【发布时间】:2013-08-08 11:31:50
【问题描述】:
在Programming C#一书中,有一些关于SynchronizationContext的示例代码:
SynchronizationContext originalContext = SynchronizationContext.Current;
ThreadPool.QueueUserWorkItem(delegate {
string text = File.ReadAllText(@"c:\temp\log.txt");
originalContext.Post(delegate {
myTextBox.Text = text;
}, null);
});
我是线程初学者,所以请详细回答。
首先不知道context是什么意思,程序在originalContext中保存的是什么?而当Post方法被触发时,UI线程会做什么?
如果我问一些愚蠢的事情,请纠正我,谢谢!
编辑:比如我在方法中只写myTextBox.Text = text;,有什么区别?
【问题讨论】:
-
The fine manual has this to say 这个类实现的同步模型的目的是让公共语言运行库的内部异步/同步操作在不同的同步模型下都能正常运行。此模型还简化了托管应用程序必须遵循的一些要求,以便在不同的同步环境下正常工作。
-
恕我直言异步等待已经这样做了
-
@RoyiNamir:是的,但你猜怎么着:
async/await依赖于下面的SynchronizationContext。 -
Stephen Toub 的这篇文章很棒,Await, SynchronizationContext, and Console Apps
标签: c# .net multithreading