AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Service Startet nicht

Ein Thema von Trafel21 · begonnen am 9. Jul 2019 · letzter Beitrag vom 9. Jul 2019
Antwort Antwort
Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#1

AW: Windows Service Startet nicht

  Alt 9. Jul 2019, 10:01
Vielen Dank, funktioniert.

Ich hatte davor mittels TThread versucht ein Thread zu handeln.

Code:
unit MyService;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.SvcMgr, Vcl.Dialogs,
  AsteriskDataModul, Eventlog;
type
  TWorkflowThread = class(TThread)
  protected
    procedure Execute; override;
    var AsteriskCallControlModule: Tbc_Asterisk_CallControl;
  end;

  TBalyTelephoneControl = class(TService)
    procedure ServiceAfterInstall(Sender: TService);
    procedure ServiceExecute(Sender: TService);
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
    procedure ServiceShutdown(Sender: TService);
  private
    { Private-Deklarationen }
    fWorkflowThread: TWorkflowThread;
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  BalyTelephoneControl: TBalyTelephoneControl;

implementation

{$R *.dfm}

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

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

procedure TBalyTelephoneControl.ServiceAfterInstall(Sender: TService);
begin
  LogMessage('Afterinstall');
end;

procedure TBalyTelephoneControl.ServiceExecute(Sender: TService);
begin
  ServiceThread.ProcessRequests(true);
end;

procedure TBalyTelephoneControl.ServiceShutdown(Sender: TService);
begin
  if Assigned(fWorkflowThread) then
  begin
    fWorkflowThread.Terminate;
    while WaitForSingleObject(fWorkflowThread.Handle, WaitHint-100) = WAIT_TIMEOUT do
      ReportStatus;
    FreeAndNil(fWorkflowThread);
  end;
end;

procedure TBalyTelephoneControl.ServiceStart(Sender: TService; var Started: Boolean);
begin
  Eventlog.EventLog_Success('Service Start','Service Start','');
  fWorkflowThread := TWorkflowThread.Create(False);
  Started := True;
end;

procedure TBalyTelephoneControl.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  Eventlog.EventLog_Success('Service Stop','Service Stop','');
  ServiceShutdown(Sender);
  Stopped := True;
end;

{ TWorkflowThread }

procedure TWorkflowThread.Execute;
begin
  inherited;
  try
    if not(assigned(AsteriskCallControlModule)) then
    begin
      AsteriskCallControlModule := Tbc_Asterisk_CallControl.Create(nil);
    end;
    while not Terminated do
    begin
      Sleep(500);
    end;
      FreeAndNil(AsteriskCallControlModule);
  except
    on e: Exception do Eventlog.EventLog_Error('Error',e.Message,'')
  end;
end;


end.
Muss ich nicht im ServiceThread mein Datamodul irgendwie einbinden?

Geändert von Trafel21 ( 9. Jul 2019 um 10:04 Uhr)
  Mit Zitat antworten Zitat
Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#2

AW: Windows Service Startet nicht

  Alt 9. Jul 2019, 12:20
Der Service funktioniert auf jedenfall und erfüllt seinen soll. Nochmal Danke für die Hilfe. ^^ Thread kann geschlossen werden.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz