所以问题是我有一个ThreadManager
类,它使用队列来保存Task
对象。 ThreadManager
可以通过调用Task
的Task
方法来启动Start()
,该方法将从中生成一个线程来运行某种算法(实际的“任务”)。现在,我要实现的是让ThreadManager
监视任务线程的状态(从Start()
对象的Task
方法生成)。
为此,我想我需要在ThreadManager
中创建一个线程来执行监视,并且我需要一种方法让任务线程触发事件以通知监视线程我已完成或遇到一些错误,因此监视器可以相应地处理这些事件。
大师,请告诉我我的想法是否适用?如果是的话,如何实现此工作流程?非常感谢!
最佳答案
我只需要使用Task.ContinueWith
来安排每个任务的延续,然后根据您在延续中任务的结果来更改状态。您知道任务已经启动(因为您叫Start()
)-您只需要知道任务何时完成即可。如果失败,取消或完成,则可以在继续任务中观察到该情况,然后可以更新状态。继续任务是Action<Task>
,它接收完成的任务。您可以调用task.Status
来获取已完成任务的状态。
然后,您不需要单独的线程/任务即可定期监视状态。
关于c# - 监控任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293871/