级联线程终止

本文关键字:终止 线程 级联 | 更新日期: 2023-09-27 18:13:10

对于时间/日期驱动的线程应用程序,我使用创建的线程(new Thread()和线程都放入列表中),其中调用的方法运行时间未定义(可以是1秒甚至一整天)。在这个方法中,可以创建一个新的(子)线程(也使用new Thread())。

现在,当应用程序的线程部分结束时(手动或因为程序结束),我将遍历我创建的线程列表并手动结束它们。

现在,据我所知,创建子线程的线程的结束(因此,包含第二个线程创建的方法的线程)并不意味着子线程的结束。所以我的问题是:有没有什么好的方法来管理它,一个线程杀死级联到它的子线程(或者我误解了线程是如何工作的吗?)

编辑:如前所述:这里提到的所有线程都是后台线程(因此后台进程创建了一个子后台进程,该子后台进程将在父进程结束时结束)。

级联线程终止

你应该以一种可控的方式停止你的线程,不让它们被操作系统杀死(假设它们是后台线程)或调用thread . abort(),如果这是"线程杀死"的意思的话。

用CancellationTokenSource创建一个CancellationToken,并为每个子线程提供这个token。线程中的方法/循环应该检查token.IsCancellationRequested()。然后只需要调用TokenSource。取消一次(在主线程中)。

参见如何使用CancellationToken属性?