gpt4 book ai didi

multithreading - 中止线程?

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

我想基于后台线程实现可中断任务。实现 TTask.Stop 方法的最简洁方法是什么?如何中止后台线程?

在线程上下文中执行的代码使用匿名方法传递给任务,并且可以包含阻塞调用,因此我不能依赖这样的事实,即定期检查 Termminate 标志在代码中。

感谢您的任何意见。

在重要的情况下使用 D2010(TThread 中的某些内容似乎已更改)

最佳答案

没有办法安全地中止正在运行的线程。对于 Windows 程序来说都是如此,无论是否用 Delphi 编写,也无论使用 Delphi 2010 或更早版本。如果您想这样调用它,那么这是操作系统的限制,但实际上这是线程的限制,因为中止线程而不确保它没有持有锁或类似的东西会对您的程序造成严重破坏。

您可以调用 TerminateThread() API函数,这是邪恶的。阅读此链接中的问题和警告列表,看看您是否仍想调用它。如果没有任务代码的配合,没有其他方法可以工作。

关于multithreading - 中止线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686940/

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