我必须说这可能是一种糟糕的模式,但在我的沙箱中,我创建了一个界面,每次单击按钮时都会调用后台服务(触发线程并使其保持活动状态)。
这很好,因为我可以创造一个混乱的局面,并了解环境将如何处理这个问题。
但是,否则,我面临一个问题:我怎样才能让所有线程当前正在运行并将它们全部杀死。打电话给GB什么的。
我必须说这可能是一种糟糕的模式,但在我的沙箱中,我创建了一个界面,每次单击按钮时都会调用后台服务(触发线程并使其保持活动状态)。
这很好,因为我可以创造一个混乱的局面,并了解环境将如何处理这个问题。
但是,否则,我面临一个问题:我怎样才能让所有线程当前正在运行并将它们全部杀死。打电话给GB什么的。
我假设您不想要所有正在运行的线程的列表-您想要通过某种特定机制启动的正在运行的线程的列表,对吗?
如果是这种情况,您可以在启动这些线程时执行以下操作:
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();