手动阻止异步方法

时间:2014-02-10 10:33:48

标签: c# async-await blocking

我对如何运行async/await方法的知识以及在什么线程上有点模糊。我想阻止一个方法,直到一个事件被触发。为此,我尝试使用ManualResetEvent但是这会阻止对异步方法的每次调用,直到调用最后waitHandle.Set( )为止所有async方法完成(或者看起来如此)。

当我尝试将基于事件的异步方法转换为基于async的{​​{1}}时,我需要一种单独阻止Task个调用的方法。

我该如何/应该去做什么?

更新

基于Stephen和Noseratio提供的信息,我现在已经将我的异步方法改为了很长的路线:

async/await

我确信对于曾经做过任何异步/等待基于任务的编程的人来说,这看起来很丑陋,但我是否正确地走上了正轨?它似乎解决了我手动重置事件的问题,现在我可以多次异步运行此方法。 :)

1 个答案:

答案 0 :(得分:3)

  

我对如何运行async / await方法的知识以及在什么线程上有点模糊。

我建议您从我的async intro开始,其中包含关键字以及它们如何确定要使用的线程。

  

我正在尝试将基于事件的异步方法转换为基于async / await的任务。

MSDN documentation on this非常好。

您无需阻止async方法;只需为EAP(方法/事件对)创建一个TAP(基于任务的)包装器。然后你可以调用你的TAP方法和await返回的任务。