C# 哪些场景构成.Net中的非默认执行上下文?

C# 哪些场景构成.Net中的非默认执行上下文?,c#,.net,multithreading,synchronization,C#,.net,Multithreading,Synchronization,WaitHandle.WaitOne()有一个ExitContext选项,允许在保留另一个资源锁之前临时释放资源锁。这在可能发生死锁或线程不足的某些情况下非常有用 这篇文章谈论的是一个默认上下文。它们仅指构成处于涉及ContexBoundObject的非默认上下文中的示例,请参见() 其他同步选项,如Monitor.Enter()、Lock{}语句是否也构成非默认上下文?还有哪些场景会将线程执行置于非默认上下文中?这是一个棘手的问题,我对它了解得不够。我所知道的是,它与远程处理场景相关。通过传递

WaitHandle.WaitOne()有一个ExitContext选项,允许在保留另一个资源锁之前临时释放资源锁。这在可能发生死锁或线程不足的某些情况下非常有用

这篇文章谈论的是一个默认上下文。它们仅指构成处于涉及ContexBoundObject的非默认上下文中的示例,请参见()


其他同步选项,如Monitor.Enter()、Lock{}语句是否也构成非默认上下文?还有哪些场景会将线程执行置于非默认上下文中?

这是一个棘手的问题,我对它了解得不够。我所知道的是,它与远程处理场景相关。通过传递True,可以避免通信阻塞,直到等待得到解决,并允许发送其他消息。可以,避免死锁,但可能导致同步问题


WaitOne()的这个参数引起了太多的混乱和FUD,以至于.NET 2.0 SP1发生了破坏兼容性的更改。他们添加了WaitOne(int)和WaitOne(TimeSpan)重载,以避免猜测exitContext参数的正确值。这通常是错误的。

这是一个棘手的问题,我对它了解不够。我所知道的是,它与远程处理场景相关。通过传递True,可以避免通信阻塞,直到等待得到解决,并允许发送其他消息。可以,避免死锁,但可能导致同步问题

WaitOne()的这个参数引起了太多的混乱和FUD,以至于.NET 2.0 SP1发生了破坏兼容性的更改。他们添加了WaitOne(int)和WaitOne(TimeSpan)重载,以避免猜测exitContext参数的正确值。这通常是错误的