如何获取所有正在运行的线程的列表

时间:2012-05-08 21:28:16

标签: c# multithreading

我必须说它可能是一个糟糕的模式,但在我的沙箱中,我创建了一个界面,每次单击按钮时都会调用后台服务(触发线程并保持其活动状态)。

这很好,因为我可以创建一个混乱局面,并了解环境将如何处理这个问题。

但是,否则,我遇到了一个问题:如何让所有线程当前运行并全部杀死它们。拨打GB或其他东西。

1 个答案:

答案 0 :(得分:3)

我假设你不想要一个 所有 运行线程的列表 - 你想要一个通过某种特定机制启动的正在运行的线程列表,对吗? / p>

如果是这种情况,您可以在启动这些线程时执行以下操作:

List<Thread> myThreads = new List<Thread>();

public void StartAThread() {
    Thread t = new Thread( ... whatever ...);
    myThreads.Add(t);
    t.Start();
}

现在,假设你想用 极端偏见 杀死那些线程 - 也就是说,你现在想让它们死掉,你不关心敲门声关于半完成工作的影响,你可以这样做:

foreach (var t in myThreads)
    t.Abort();