Einzelnen Beitrag anzeigen

Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#4

Re: Anwendung --> Dienst erstellen

  Alt 28. Okt 2004, 12:20
Hallo,

Zitat von Susanne:
In myThread.Execute packe ich dann die Funktion, die die ganze Abarbeitung der Blöcke steuert. Ist das richtig?
Korrekt. Der neue Thread wird dann parallel zum Rest deines Dientes/Programmes ausgeführt.


Zitat von Susanne:
und in die Unit des Dienstes in der Methode onStart kommt dann dieses rein, und dadurch wird der Thread dann gestartet?

myThread := TWorkerThread.Create(false);
Ja, der Parameter false gibt an das er sofort loslaufen soll. Das steht auch in der Hilfe zu Delphi-Referenz durchsuchenTThread. Außerdem kannst du dort noch solche Sachen machen wie Priorität des Threads festlegen (Eigenschaft Delphi-Referenz durchsuchenTThread.Priority), damit er den Rechner nicht so auslastet.

Zitat von Susanne:
Ich habe auch noch zwei Timer in der BlockVerarbeitung mit drin, muss ich da noch was besonderes beachten?

...
Wieso hast du denn da noch ein Form drinne? Es ist ein Dienst und die haben so etwas eigentlich nicht! Hast du da irgend etwas anderes wichtiges drauf außer die Timer?

Zitat von Susanne:
solange der Thread also nicht beendet wurde läuft er immer wieder durch die Schleife, wenn ich nun den Dienst beende sage ich dem Thread durch den Assigned-Teil, dass er beendet werden soll und er geht aus der Schleife raus? und ruft dann FormCloseQuery aus?
Nicht ganz, das Assigned ist nur dazu da um zu schauen ob der Thread auch schon gestarten oder nicht schon beendet wurde. Das myThread.Terminate sorgt dafür das im Thread u.a. das Terminated wahr wird. Durch das myThread.WaitFor wartet die onStop Methode bis der Thread auch wirklich fertig ist und das FreeAndNil gibt dann einfach den Thread frei.

Zitat von Susanne:
Frage: FormCreate läuft eigentlich auch in einer endlos-Schleife, Füher hat er das Signal zum sich beenden durch das Klicken auf das Kreuz des Fensters bekommen. Und das FormCreate lief auch nicht in einer Schleife.
Wie gesagt - Dienste haben keine Formulare! Wenn der Benutzer etwas rumklicken können muß (außer zum Beenden) ist ein Dienst dafür vielleicht nicht geeignet.
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat