N netpacer Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-15 #1 哪位大虾对这方面有深入研究,指教小弟一番。我的服务程序中总是执行一遍就自动停止服务了。这是怎么回事?
N netpacer Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-15 #2 环境:D6,ADOConnection、ADOQuery包含于一个Data Model中,NT服务程序。未改造成服务程序前能正确循环操作数据库。改造成服务程序后操作一遍后就停止服务。(第一次来这里提问,怎么换行的?回车不管用啊)) 代码:
环境:D6,ADOConnection、ADOQuery包含于一个Data Model中,NT服务程序。未改造成服务程序前能正确循环操作数据库。改造成服务程序后操作一遍后就停止服务。(第一次来这里提问,怎么换行的?回车不管用啊)) 代码:
A Adnil Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-15 #3 不用说,肯定是服务程序出错造成停止服务的 方法1: 在ServiceExecute中的第一行加上sleep(10000) 然后在后面的代码上面加上断点,然后启动服务,在sleep(10000)这10秒钟内( 时间你可以自己改),打开Delphi的菜单"run|attach to process...",选择 Service的执行程序即可进入Debug状态。 方法2: 使用try except封装ServiceExecute中的代码,将错误输出到文本文件中去,查看 文本文件即可知道哪里出错。
不用说,肯定是服务程序出错造成停止服务的 方法1: 在ServiceExecute中的第一行加上sleep(10000) 然后在后面的代码上面加上断点,然后启动服务,在sleep(10000)这10秒钟内( 时间你可以自己改),打开Delphi的菜单"run|attach to process...",选择 Service的执行程序即可进入Debug状态。 方法2: 使用try except封装ServiceExecute中的代码,将错误输出到文本文件中去,查看 文本文件即可知道哪里出错。
N netpacer Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-15 #5 现在是停不了服务,又如何搞定?在serviceexecute中我是这样弄的,怎么样停止服务为好。 while not Terminated do begin 某数据库操作函数; Sleep(10000);end;
现在是停不了服务,又如何搞定?在serviceexecute中我是这样弄的,怎么样停止服务为好。 while not Terminated do begin 某数据库操作函数; Sleep(10000);end;
N netpacer Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-18 #6 有人是用ini文件,我想不至于非这样不可吧。各位大虾,支招啊!
A Adnil Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-18 #7 while not Terminated do begin 某数据库操作函数; Sleep(1000);end; 这样就行了,10秒钟在循环里面的话就太长了,系统会以为停止服务没有响应。
N netpacer Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-19 #8 我改成了一秒钟,可还是停不了,是不是因为函数中操作数据库的时间太长,如果这样那大数据量的服务该怎么控制啊?
A Adnil Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-19 #9 OnStop事件中得写上 procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean); begin Stopped := True; end;
OnStop事件中得写上 procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean); begin Stopped := True; end;