我用delphi做的系统服务程序为什么不能停止
我做的是用internetDial()函数用modem自动拨号(拨号失败重拨间隔1分钟,无限次),我发现自动拨了一次后该服务就无法停止和暂停,有时还无法关机。
代码如下function InternetGetConnectedState(lpdwFlags: LPDWORD;
  dwReserved: DWORD): BOOL; stdcall; external 'WININET.DLL';procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  autoDial.Controller(CtrlCode);
end;function TautoDial.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;procedure TautoDial.Timer1Timer(Sender: TObject);
var
  conn:DWORD;
  dwConnectionTypes,
  III:integer;
  hwndParent:HWND;
begin
  try
  hwndParent:=0;
  InternetGetConnectedState(@dwConnectionTypes, 0);
  III:=(dwConnectionTypes and INTERNET_CONNECTION_MODEM);   IF III=0 THEN
    BEgin
     InternetDial(hwndParent,
               'gprs',
               INTERNET_DIAL_UNATTENDED,
               @Conn,
               0);
     addlog('dialLog.txt','掉线进行尝试拨号');
     end;
   except
     addlog('dialLog.txt','拨号是发生异常');
   end;
end;procedure TautoDial.addlog(filename:string;s:string);
var
  fLog: textfile;
begin
  if fileexists(sysPath+fileName) then
  begin
    Assignfile(fLog,sysPath+filename);
    append(fLog);
    writeln(flog,DateTimetostr(now)+'  '+s);
    closeFile(fLog);
  end;
end;procedure TautoDial.ServiceStart(Sender: TService; var Started: Boolean);
var
  path:string;
  npos:integer;
begin
  path:=paramstr(0);
  npos:=pos('\',path);
  while npos<>0 do
  begin
    syspath:=sysPath+copy(path,1,npos);
    path:=copy(path,npos+1,length(path)-npos);
    npos:=pos('\',path);
  end;
  started:=true;
end;procedure TautoDial.ServiceExecute(Sender: TService);
begin
  showmessage('onlinKeeperExecute');
  while not Terminated do begin
    ServiceThread.ProcessRequests(false);
  end;
end;procedure TautoDial.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  showmessage('onstop');
 stopped:=true;
end;procedure TautoDial.ServicePause(Sender: TService; var Paused: Boolean);
begin
  showmessage('onpause');
paused:=true;
end;procedure TautoDial.ServiceContinue(Sender: TService;
  var Continued: Boolean);
begin
   Continued  := true;
end;end.