gpt4 book ai didi

c# - 级联线程杀死

转载 作者:行者123 更新时间:2023-12-02 19:36:36 24 4
gpt4 key购买 nike

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

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

现在,据我了解,创建子线程的线程的结束(因此包含创建第二个线程的方法的线程)并不意味着子线程的结束。所以我的问题是:是否有任何好的方法来管理它,线程杀死确实级联到其子级(或者我是否误解了线程在那里工作的方式?)。

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

最佳答案

您应该以受控的方式停止线程,不要让它们被操作系统杀死(假设它们是后台线程)或调用 Thread.Abort(),如果这就是“线程杀死”的含义。

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

参见How to use the CancellationToken property?

关于c# - 级联线程杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24751715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com