对于时间/日期驱动的线程应用程序,我使用创建的线程(new Thread()和线程都放在列表中),其中调用的方法运行时间不确定(可以是1秒,甚至是一整天)。在这个方法中,可以创建一个新的(子)线程(也可以使用new Thread())。
现在,当应用程序的线程部分结束(手动或程序结束)时,我将遍历我创建的线程列表,并手动结束这些线程。
现在,据我了解,创建子线程的线程(因此,包含创建第二个线程的方法的线程)的结束并不意味着子线程的结束。因此,我的问题是:有什么好的方法来管理线程杀死它的子线程(或者我是否误解了线程在那里的工作方式?)
编辑:正如有人问的那样:这里提到的所有线程都是后台线程(因此,后台进程创建一个子后台进程,当父进程结束时结束)。
发布于 2014-07-15 07:07:33
您应该以一种受控的方式停止您的线程,而不是让它们被操作系统(假设它们是后台线程)杀死,或者调用Thread.Abort(),如果这就是“线程杀死”的意思。
使用CancellationTokenSource创建一个CancellationTokenSource,并为每个SubThread提供此令牌。线程中的方法/循环应该检查token.IsCancellationRequested()。然后只需要调用TokenSource.Cancel一次(在主线程中)。
https://stackoverflow.com/questions/24751715
复制相似问题