我想等待来自另一个线程的事件信号而不阻塞等待线程。理想情况下使用等待。
我想到了这个解决方案:
await Task.Run(() => myAutoResetEvent.WaitOne());
我想知道它是否存在概念上的错误以及是否有更好的替代方案
谢谢!
答案 0 :(得分:1)
这样做有什么问题?
您正在使用线程池线程来等待"信号"。
什么是更好的选择?
您可以使用与异步兼容的AutoResetEvent
,例如my AsyncEx library中的{{}}或Stephen Toub's blog上的{。}}。
此外,大多数时候自动重置事件都是错误的。手动重置事件更为常见。我建议重新评估这种同步原语选择。