Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > отменить остановку службы


Автор: JS2 20.11.2009, 12:08
Столкнулся с проблемой в обработчике OnStop при написании службы. К примеру:

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
  TService1 = class(TService)
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
  private
    { Private declarations }
  public
    function GetServiceController: TServiceController; override;
    { Public declarations }
  end;

var
  Service1: TService1;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
   // ...
   Stopped := False; 
   // ...
end;

end.


При попытке остановить службу cо Stopped = False вылетает сообщение: не удалось остановить службу Тестовая служба на Локальный компьютер. Эта служба не возвращала ошибки. Возможно, это внутренняя ошибка Windows или внутренняя ошибка службы.

Далее нажимаю снова остановить. Индикатор остановки службы не доходит до конца, подвисает, но в конечном итоге служба останавливается с занесением в события ошибки. 

P.S. А нужно вообще сделать слудующее. В определенные моменты отменять попытку остановки службы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)