【问题标题】:Get WaitHandle from Task从任务中获取 WaitHandle
【发布时间】:2019-11-19 17:45:21
【问题描述】:

我有一个 Iterator 方法,其中我需要使用 TaskCancellationTokenAutoResetEvent 来监控 Producer 进程。我需要能够等待任何(我不能等待,因为它是一个迭代器)。

我使用了Threading.WaitHandle.WaitAny(WaitHandle[]),它适用于CancellationTokenAutoResetEvent,但我找不到如何从任务中获取WaitHandle

【问题讨论】:

    标签: .net multithreading


    【解决方案1】:

    诀窍是将Task 转换为IAsyncResult,然后您可以像这样使用AsyncWaitHandle 属性

    Threading.WaitHandle.WaitAny(New Threading.WaitHandle[] {((IAsyncResult)MyTask).AsyncWaitHandle, token.WaitHandle, autoResetHandle})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 2013-12-27
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多