Einzelnen Beitrag anzeigen

Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Anwendung --> Dienst erstellen

  Alt 28. Okt 2004, 07:29
Hab noch nie mit Threads gearbeitet, deshalb auch noch mal ein paar Fragen mehr zum Verständnis.

Gut, das hat mir schon ein ganzes Stück weiter geholfen. Ich habe nun die Bestehende Klasse, so wie sie bisher alleine lief in einen Thread gepackt, mittlerweile gibt es auch keine CompilerFehler mehr.

In myThread.Execute packe ich dann die Funktion, die die ganze Abarbeitung der Blöcke steuert. Ist das richtig? 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);
Ich habe auch noch zwei Timer in der BlockVerarbeitung mit drin, muss ich da noch was besonderes beachten?

Und der folgende Teil kommt dann bei onStop-Ereignis des Dienstes rein?

Delphi-Quellcode:
if Assigned(myThread) then
begin
  myThread.Terminated;
  myThread.WaitFor;
  FreeAndNil(myThread);
end;
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?

Delphi-Quellcode:
procedure TimeManagerThread.Execute;
begin
  while not Terminated do
  begin
    FormCreate;
  end;
  FormCloseQuery;
  { Thread-Code hier einfügen }
end;
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.

wäre dann vielleicht auch das möglich bzw, Sinnvoller? ich hab was von einer Methode Terminate gelesen, kann ich die dann nicht eventuell aufrufen?
Delphi-Quellcode:
procedure TimeManagerThread.Execute;
begin
   FormCreate;
   if terminated then
      FormCloseQuery;
end;
und alles was ich in meinen Dienst reingepackt habe wie wie die oberen beiden Sachen, die meckert er an, wie
Undefinierter Bezeichner: 'TMThread'
Operator oder Semikolon fehlt
Susanne
  Mit Zitat antworten Zitat