作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何确保服务不会因任何原因而停止
除非它已被用户停止。
我已经尝试过了,但是没有成功。
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/
我是一名优秀的程序员,十分优秀!