可以在没有ContextBoundObject类的情况下使用带有ExitContext标志的WaitHandle.WaitOne吗?

时间:2010-06-21 15:11:26

标签: c# .net multithreading synchronization

MSDN文档表明可能有其他方法使用ExitContext标志。请参阅WaitHandle.WaitOne()除了使用ContextBoundObject继承类之外,还有哪些其他方法可以输入非默认上下文? (我不能在我的应用程序中使用ContextBoundObject)

1 个答案:

答案 0 :(得分:2)

线索在这句话中。

  

即使您当前正在执行   对于未派生的类的方法   来自ContextBoundObject,如String,   如果你可以在非默认情况下   ContextBoundObject在你的堆栈上   在当前的应用领域。

所以基本上你可以从一个不是WaitOne子类的类中调用ContextBoundObject,也不会有任何先入为主的观念,ContextBoundObject与你的代码有任何关系有问题的线程可能在非默认上下文中,因为在调用堆栈中的某个地方,ContextBoundObject类的实例方法可能无法运行。

除了这个单独的异常之外,没有其他方法可以进入非默认同步上下文。

有一篇关于线程的非常好的文章,其中包含与同步上下文相关的其他信息,可以找到here