AutoResetEvent并等待

时间:2016-06-18 20:50:41

标签: c# multithreading asynchronous

我想等待来自另一个线程的事件信号而不阻塞等待线程。理想情况下使用等待。

我想到了这个解决方案:

        await Task.Run(() => myAutoResetEvent.WaitOne());

我想知道它是否存在概念上的错误以及是否有更好的替代方案

谢谢!

1 个答案:

答案 0 :(得分:1)

  

这样做有什么问题?

您正在使用线程池线程来等待"信号"。

  

什么是更好的选择?

您可以使用与异步兼容的AutoResetEvent,例如my AsyncEx library中的{{}}或Stephen Toub's blog上的{。}}。

此外,大多数时候自动重置事件都是错误的。手动重置事件更为常见。我建议重新评估这种同步原语选择。