我的团队正在使用C#5.0中的async/await开发一个多线程应用程序.在实现线程同步的过程中,经过几次迭代,我们想出了一个(可能是新颖的?)新的SynchronizationContext实现,它有一个内部锁:
在所有情况下,在执行委托之前,上下文将自身设置为当前上下文,并在委托返回时恢复原始上下文.
这是一个不寻常的模式,因为我们显然不是第一个写这样的应用程序的人,我想知道:
这是SerializingSynchronizationContext的源代码和GitHub上的一个演示.
以下是它的使用方法:
上下文是可以接受的,因此可以使用以下语句.
await myContext;
这只会导致方法的其余部分在上下文的保护下运行.