c# - 监控任务

标签 c# .net multithreading

所以问题是我有一个ThreadManager类,它使用队列来保存Task对象。 ThreadManager可以通过调用TaskTask方法来启动Start(),该方法将从中生成一个线程来运行某种算法(实际的“任务”)。现在,我要实现的是让ThreadManager监视任务线程的状态(从Start()对象的Task方法生成)。

为此,我想我需要在ThreadManager中创建一个线程来执行监视,并且我需要一种方法让任务线程触发事件以通知监视线程我已完成或遇到一些错误,因此监视器可以相应地处理这些事件。

大师,请告诉我我的想法是否适用?如果是的话,如何实现此工作流程?非常感谢!

最佳答案

我只需要使用Task.ContinueWith来安排每个任务的延续,然后根据您在延续中任务的结果来更改状态。您知道任务已经启动(因为您叫Start())-您只需要知道任务何时完成即可。如果失败,取消或完成,则可以在继续任务中观察到该情况,然后可以更新状态。继续任务是Action<Task>,它接收完成的任务。您可以调用task.Status来获取已完成任务的状态。

然后,您不需要单独的线程/任务即可定期监视状态。

关于c# - 监控任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293871/

相关文章:

c# - 在何处配置 WCF 服务(REST 和 SOAP)

c# - UI 线程在文本框调用期间卡住

java - 类级别、实例级别和本地 ThreadLocals

java - Sun JVM 如何将 Java 线程映射到 Windows 线程?

c# - 继承 EF Code-First

.net - 带有更改文章名称的 ASP.NET 路由

c# - Azure 中跨上下文 LINQ 加入?

c# - 可重复使用的 LINQ 查询,where 子句除外

c# - 高性能 C# 服务器套接字的技巧/技巧

c# - 使用 HttpWebRequest 传输到 ftp 站点