MSDN文档表明可能有其他方法使用ExitContext标志。请参阅WaitHandle.WaitOne()除了使用ContextBoundObject继承类之外,还有哪些其他方法可以输入非默认上下文? (我不能在我的应用程序中使用ContextBoundObject)
答案 0 :(得分:2)
线索在这句话中。
即使您当前正在执行 对于未派生的类的方法 来自ContextBoundObject,如String, 如果你可以在非默认情况下 ContextBoundObject在你的堆栈上 在当前的应用领域。
所以基本上你可以从一个不是WaitOne
子类的类中调用ContextBoundObject
,也不会有任何先入为主的观念,ContextBoundObject
与你的代码有任何关系有问题的线程可能在非默认上下文中,因为在调用堆栈中的某个地方,ContextBoundObject
类的实例方法可能无法运行。
除了这个单独的异常之外,没有其他方法可以进入非默认同步上下文。
有一篇关于线程的非常好的文章,其中包含与同步上下文相关的其他信息,可以找到here。