我对如何运行async/await
方法的知识以及在什么线程上有点模糊。我想阻止一个方法,直到一个事件被触发。为此,我尝试使用ManualResetEvent
但是这会阻止对异步方法的每次调用,直到调用最后waitHandle.Set( )
为止所有async
方法完成(或者看起来如此)。
当我尝试将基于事件的异步方法转换为基于async
的{{1}}时,我需要一种单独阻止Task
个调用的方法。
我该如何/应该去做什么?
更新
基于Stephen和Noseratio提供的信息,我现在已经将我的异步方法改为了很长的路线:
async/await
我确信对于曾经做过任何异步/等待基于任务的编程的人来说,这看起来很丑陋,但我是否正确地走上了正轨?它似乎解决了我手动重置事件的问题,现在我可以多次异步运行此方法。 :)
答案 0 :(得分:3)
我对如何运行async / await方法的知识以及在什么线程上有点模糊。
我建议您从我的async
intro开始,其中包含关键字以及它们如何确定要使用的线程。
我正在尝试将基于事件的异步方法转换为基于async / await的任务。
MSDN documentation on this非常好。
您无需阻止async
方法;只需为EAP(方法/事件对)创建一个TAP(基于任务的)包装器。然后你可以调用你的TAP方法和await
返回的任务。