监控任务

时间:2011-09-03 14:55:56

标签: c# .net multithreading

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

我认为您可以在经理集合中的每个Task对象上使用Task.IsCompleted属性。希望这是你的要求吗?