使用ADO控件时NT服务程序的编写和调试(200分)

  • 主题发起人 主题发起人 netpacer
  • 开始时间 开始时间
N

netpacer

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位大虾对这方面有深入研究,指教小弟一番。我的服务程序中总是执行一遍就自动停止服务了。这是怎么回事?
 
环境:D6,ADOConnection、ADOQuery包含于一个Data Model中,NT服务程序。未改造成服务程序前能正确循环操作数据库。改造成服务程序后操作一遍后就停止服务。(第一次来这里提问,怎么换行的?回车不管用啊))
代码:
 
不用说,肯定是服务程序出错造成停止服务的

方法1:
在ServiceExecute中的第一行加上sleep(10000)
然后在后面的代码上面加上断点,然后启动服务,在sleep(10000)这10秒钟内(
时间你可以自己改),打开Delphi的菜单"run|attach to process...",选择
Service的执行程序即可进入Debug状态。

方法2:
使用try except封装ServiceExecute中的代码,将错误输出到文本文件中去,查看
文本文件即可知道哪里出错。
 
多谢,弄弄看先
 
现在是停不了服务,又如何搞定?在serviceexecute中我是这样弄的,怎么样停止服务为好。
while not Terminated do begin
某数据库操作函数;
Sleep(10000);end;
 
有人是用ini文件,我想不至于非这样不可吧。各位大虾,支招啊!
 
while not Terminated do begin
某数据库操作函数;
Sleep(1000);end;

这样就行了,10秒钟在循环里面的话就太长了,系统会以为停止服务没有响应。
 
我改成了一秒钟,可还是停不了,是不是因为函数中操作数据库的时间太长,如果这样那大数据量的服务该怎么控制啊?
 
OnStop事件中得写上
procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
Stopped := True;
end;
 
接受答案了.
 
后退
顶部