作者热门文章
- html - 我的下拉菜单的内容关闭得太快
- c# - 使用 Html Agility Pack 从网页中的表中获取值而不使用 "SelectNode'
- html - 内容容器下的 CSS 下拉菜单
- html - 如何停止嵌套列表重叠父列表?
如何确保服务不会因任何原因而停止
除非它已被用户停止。
我已经尝试过了,但是没有成功。
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/
我是一名优秀的程序员,十分优秀!