如何在多个任务中等待特定事件的发生

本文关键字:事件 等待 任务 | 更新日期: 2023-09-27 17:50:59

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

Executor.Start(id).

Start(string)立即返回。在某个时刻,执行器通过回调发出信号,表示具有某个id的任务已经完成。但是我需要等待,直到由查询发起的任务完成,只有在此之后web服务才应该发送响应。如何实现这一点?

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

if (!manualResetEvent.WaitOne(100000))
{
}

如何在多个任务中等待特定事件的发生

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

是的,你可以使用ManualResetEvents。

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