调用正在运行的线程c#

时间:2014-10-24 09:03:14

标签: c# multithreading

我有一个Windows服务,主线程产生几个子线程来执行工作。主线程按名称维护这些线程的列表。子进程完成后,主线程将其从列表中删除。 Main使用计时器定期启动子线程(如果它尚未运行)(通过检查列表)。线程以“即发即忘”线程启动。 有时儿童线程可能会挂起,或者可能只需要很长时间。但我的主线程无法知道。我希望主线程能够“调用”子线程并询问“你在做什么吗?”如果孩子回应,那么我知道他没有挂起。

1 个答案:

答案 0 :(得分:3)

您可以使用心跳

每次执行一些小动作时,子线程都会使用当前UTC时间更新变量。每个线程(或并发字典)都需要一个(properly locked)变量。

您的主线程会定期检查这些心跳。如果心跳比某个给定的时间长,主线程知道子线程的某些动作比应该花费的时间长。