我还有一个问题:http://www.delphigroups.info/3/9/106748.html
我已经尝试了几乎所有形式的代码中放置Application-> Terminate()func,跟随而不是'return 0','ExitProcess(0)','ExitThread(0)',exit(0) 。没有工作变体关闭应用程序。相反,Application-> Terminate()语句之后的代码正在运行。
我在应用中有两个或更多线程。我尝试在执行线程和主线程之后调用terminate func。
这与CodeGuard / madExcept(我已关闭并打开,没有效果)无关(据我所知)。 CodeGuard转向也没有成功。
唯一可用的代码变体是将Application-> Terminate()调用放置到任何表单按钮的OnClick处理程序中。但这不符合我的需要。我需要在任何地方终止。
我应该怎么做才能终止C ++ Builder 2010应用程序中的所有线程,然后终止进程?
答案 0 :(得分:3)
Application->Terminate()不会立即关闭应用程序,它只表示您要关闭应用程序。
终止调用Windows API PostQuitMessage函数执行一个 有序关闭应用程序。 终止不是即时的。
在函数中调用Application->ProcessMessages(),然后检查Application->Terminated属性是否为真。
对于使用的应用程序 计算密集型循环,调用 ProcessMessages定期,和 还检查终止确定 是否中止计算和 允许应用程序终止
例如:
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
}