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

发布于 2024-09-07 02:56:51 字数 274 浏览 1 评论 0原文

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

MSDN documentation suggests that there may be other ways of using ExitContext flag. See WaitHandle.WaitOne() What other ways are there to enter a non-default context outside of using a ContextBoundObject inherited class? (I can't use ContextBoundObject in my application)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

墟烟 2024-09-14 02:56:51

线索就在这句话里。

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

因此,基本上,您可以从没有子类 ContextBoundObject 的类中调用 WaitOne ,也不会对 ContextBoundObject 存在任何先入为主的观念涉及您的代码,但有问题的线程可能位于非默认上下文中,因为在调用堆栈中的某个位置,ContextBoundObject 类的实例方法可能正在您不知情的情况下运行。

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

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

The clue is in this sentence.

Even if you are currently executing a
method on a class that does not derive
from ContextBoundObject, like String,
you can be in a nondefault context if
a ContextBoundObject is on your stack
in the current application domain.

So basically you could call WaitOne from within a class that does not subclass ContextBoundObject nor would you have any preconceived notion that a ContextBoundObject was in any way involved with your code and yet the thread in question could be in a nondefault context because somewhere way up in the call stack an instance method of a ContextBoundObject class could be running unbeknown to you.

Outside of that lone exception there are no other ways of entering into a nondefault synchronization context.

There is a pretty good article on threading with additional information related to synchronization contexts which can be found here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文