gpt4 book ai didi

multithreading - 从delphi中的线程中止整个应用程序

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

我的 delphi 应用程序有一个重大问题。我正在开发一个使用外部安全性的软件。我使用的 USB 设备必须连接到用户计算机才能运行我的软件。如果用户万一删除了该加密狗,或者在没有它的情况下启动,该应用程序应该警告用户并立即停止。创建应用程序时会释放一个线程,用于检查安全设备。但是,当检查失败时,例如找不到设备,该线程不会杀死我的应用程序。我正在使用这样的东西:

    retCode := checkSecurity();
if retCode = -1 then
begin
ShowMessage('Security device not found! Terminating immediately!');
Application.Terminate;
end;

这里的主要问题是 Application.Terminate 并没有真正终止应用程序。我在 SO 和其他地方读到终止发送一个正常关闭的信号并等待其他线程(在我的例子中是应用程序的主线程)完成。我确实需要如上所述终止应用程序,终止所有线程并退出,如果可能的话,进行清理以避免内存泄漏,但如果没有,那对我来说没问题。我正在使用 Delphi XE2,使用 Windows 8.1 进行开发。

有什么想法吗?

最佳答案

您可以调用ExitProcess强制立即终止。与 Halt 相比,操作系统函数 ExitProcess 执行的清理工作甚至更少。

关于multithreading - 从delphi中的线程中止整个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30078488/

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