如何在多个任务中等待特定事件的发生
本文关键字:事件 等待 任务 | 更新日期: 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脚本计时器,不时检查作业的状态并报告结果。这样网页保持响应,你甚至可以允许用户取消查询,如果服务器支持。