我有一个迭代器方法,其中我需要使用Task、CancellationToken和AutoResetEvent来监视生产者进程。我需要能够等待任何(我不能等待,因为它是一个迭代器)。
我使用了Threading.WaitHandle.WaitAny(WaitHandle[]),它可以用于CancellationToken和AutoResetEvent,但我找不到如何从任务中获取WaitHandle。
发布于 2019-11-20 01:45:21
诀窍是将Task转换为IAsyncResult,然后可以像这样使用AsyncWaitHandle属性
Threading.WaitHandle.WaitAny(New Threading.WaitHandle[] {((IAsyncResult)MyTask).AsyncWaitHandle, token.WaitHandle, autoResetHandle})https://stackoverflow.com/questions/58939986
复制相似问题