gpt4 book ai didi

c++builder - C builder RAD 2010 RTL/VCL 应用程序->Terminate() 函数未终止应用程序

转载 作者:行者123 更新时间:2023-12-01 02:56:52 29 4
gpt4 key购买 nike

我这里也描述了一个问题:http://www.delphigroups.info/3/9/106748.html

我已经尝试了几乎所有形式的将 Application->Terminate() func 放置在代码中的任何地方,而不是 'return 0'、'ExitProcess(0)'、'ExitThread(0)'、exit(0)。没有工作变体关闭应用程序。相反,Application->Terminate() 语句之后的代码正在运行。

我在应用中有两个或更多线程。我尝试在执行后线程和主线程中调用终止函数。

此外,这与 CodeGuard/madExcept 无关(据我所知)(我已将其关闭并打开,没有效果)。 CodeGuard 转也没有做成功。

唯一有效的代码变体是将 Application->Terminate() 调用放置到任何表单按钮的 OnClick 处理程序中。但这不符合我的需求。我需要在任何地方终止。

我应该怎么做才能终止 C++ Builder 2010 应用程序中的所有线程,然后终止进程?

最佳答案

Application->Terminate()不会立即关闭应用程序,它只会发出您想要关闭应用程序的信号。

Terminate calls the Windows API PostQuitMessage function to perform an orderly shutdown of the application. Terminate is not immediate.



在您的函数中调用 Application->ProcessMessages()然后检查 Application->Terminated属性是真的。

For applications using calculation-intensive loops, call ProcessMessages periodically, and also check Terminated to determine whether to abort the calculation and allow the application to terminate



例如:
void Calc()
{
for (int x = 0; x < 1000000; ++x)
{
// perform complex calculation

// check if need to exit
Application->ProcessMessages();
if (Application->Terminated)
{
break;
} // end if
} // end for

// clean up
}

关于c++builder - C builder RAD 2010 RTL/VCL 应用程序->Terminate() 函数未终止应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685625/

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