gpt4 book ai didi

c# - 线程、中止和等待

转载 作者:行者123 更新时间:2023-12-03 12:51:03 26 4
gpt4 key购买 nike

我正在中止一个线程(很快就会成为线程),问题是我需要停止直到所有线程都被中止。

做完Thread.Abort();我想用 Thread.Join()等到它完全中止。然而,这不起作用。它只是永远等待。我如何中止每个线程并等到它完成后再继续?

附加信息:如果你好奇为什么——在这种情况下,我正在关闭一个窗口,我将一个委托(delegate)函数传递给它在完成(或中止)时调用的线程。如果我不停止,那么窗口将关闭并且该函数将调用无效句柄/objs。我可以轻松地使用相同的方法,插入一个标志并循环和 sleep ,直到设置所有标志,但感觉不对。

最佳答案

我从多年的线程经验中了解到,如果遵循这些规则,生活会变得更轻松。

与这个问题相关的一个是:

  • 让线程控制它们自己的资源,包括它们的生命周期。

  • 我不会中止线程,我只是在线程创建者和线程本身之间建立一个通信方法来通知线程终止,然后让线程本身关闭。

    这种方法通常可以像控制线程主循环的创建者写入/线程读取标志一样简单。如果线程在循环中有长时间运行的任务,您还应该定期检查。

    然后创建者线程应该加入,直到线程退出。如果设计得当,您可以设置所需时间的上限。

    关于c# - 线程、中止和等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/762875/

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