gpt4 book ai didi

delphi - 不间断服务

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

如何确保服务不会因任何原因而停止
除非它已被用户停止。
我已经尝试过了,但是没有成功。

OnExecute:

Count := 0;
while not Terminated do
begin
Inc(Count);
While Count >= SecBetweenRuns do
Begin
Try
Count := 0;
...
Except
on E: exception do
Begin
JFCLogFile1.LogText := E.Message;
Break;
End;
End;
End;
Sleep(1000);
ServiceThread.ProcessRequests(False);
end;


如果发生任何异常,服务将停止工作,必须手动重新启动。
我想打破循环并在异常发生时重新开始,而无需用户干预。

最佳答案

可能发生的唯一方法是,如果引发了未被捕获的异常,并且允许其离开OnExecute处理程序。因此,您显然没有抓住您认为的一切。

我个人建议完全不使用OnExecute事件。将您的逻辑移到一个单独的工作线程中,该线程在service OnStart事件中启动,并在service OnStop事件中终止。至少这样,如果线程崩溃,它不会停止服务。您可以重写TThread.DoTerminate()方法以检查TThread.FatalException属性,以了解是否有未捕获的异常杀死了线程。

关于delphi - 不间断服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17425173/

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