【发布时间】:2023-03-04 20:32:01
【问题描述】:
使用 C# 创建 Windows 服务应用程序。我有一个主要对象,它创建工作线程以定期执行各种任务。每个工人完成一项特定任务,等待一段时间,然后重复。
如果其中一项任务失败,我希望该线程提醒主线程记录任务失败然后退出。
我曾考虑过使用 ManualResetEvent,其中 Set 将从每个工作人员调用(并且 main 将循环检查它)。问题是,多个工作人员可能同时失败并同时尝试 Set() 事件。
是否有一种线程安全的方式来处理来自多个工作线程的警报?只需要一个警报,我不需要处理收到的第一个警报。
【问题讨论】:
-
使用 TPL 和
Task对象将非常适合这种情况:stackoverflow.com/tags/task-parallel-library/info
标签: c# windows multithreading service thread-safety