代码之家  ›  专栏  ›  技术社区  ›  dst

WaitOne什么时候执行非框架代码?

  •  0
  • dst  · 技术社区  · 7 年前

    我在调用时遇到了导致其他代码被执行的竞争条件 System.Threading.WaitHandle.WaitOne ,在线程上 WaitOne 正在运行。根据文件,我认为 怀通 为任何非框架代码阻塞线程,直到满足其返回条件之一。

    怀通


    遗憾的是,我无法确定使用了什么方法来调度实际执行的代码。不过,我还是可以给出一些细节:

    • 我控制之外的应用程序(Outlook)加载非托管DLL,它调用托管DLL,后者调用WCF代理上的方法。WCF的实现调用 ,在调用期间发生问题。这意味着堆栈上有几个非托管/托管转换。
    • NetNamedPipeBinding
    • 在WCF代理调用期间,Outlook有机会在同一线程上执行代码。在代码执行之后,调用仍然正确完成。
    • 我只在main/ui线程上观察到这种行为
    • Task.Wait Task.Run ),的 Wait 表现出相同的行为;因此很可能 Monitor.Wait 和其他相关方法的行为方式相同。
    1 回复  |  直到 7 年前
        1
  •  0
  •   dst    7 年前