如何等到多个任务中发生特定事件?

时间:2014-03-19 11:43:33

标签: c# multithreading web-services

我有一个可以同时处理多个查询的网络服务。每个查询通过将id传递给某个执行程序来启动异步任务,如下所示:

Executor.Start(id).

Start(string)立即返回。在某些时候,执行器通过回调发出信号,表明已完成具有某个id的任务。但我需要等到查询启动的任务完成后,才能在该Web服务发送响应之后。怎么实现这个?

是否可以为每个查询创建ManualResetEvent,将其添加到某个跟踪器,并在完成具有相应ID的任务时调​​用Set()?可以存储数百个ManualResetEvent的集合吗?我可以这样写:

if (!manualResetEvent.WaitOne(100000))
{

}

1 个答案:

答案 0 :(得分:0)

根据您的评论(查询不相关,只是独立完成)

是的,您可以使用ManualResetEvents。

更好的设计(从Web应用程序的角度来看)是立即返回并使用java脚本计时器,不时检查作业的状态并报告结果。这样,网页保持响应,如果服务器支持,您甚至可以允许用户取消查询。