AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Erkennen ob irgendein Thread beendet wird.
Thema durchsuchen
Ansicht
Themen-Optionen

Erkennen ob irgendein Thread beendet wird.

Ein Thema von himitsu · begonnen am 3. Mär 2012 · letzter Beitrag vom 3. Mär 2012
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#1

AW: Erkennen ob irgendein Thread beendet wird.

  Alt 3. Mär 2012, 23:57
Nunja, ich bin dabei meine Codes aufzuräumen und unter Anderem wird auch ein abstraktes Logging-System mit integriert.
(es hat selber keine Logfunktion, sondern dient nur als Schnittstelle für gewisse Grundfunktionen, um dort später irgendein Loggsystem, wie z.B. Eurekalog oder sonstewas, dort anhängen zu können)

Nun gibt es da auch folgene Methode, welche man auf unterschiedliche Weise nutzen kann, wie z.B.:
Delphi-Quellcode:
begin
  HLog.EnterMethod('Name der Prozedur'); // eventuell auch ohne Name HLog.EnterMethod;
  ...
  HLog.ExitMethod;
end;

begin
  HLog.EnterMethod('Prozedur');
  ...
  HLog.ExitMethod(Result); // oder man loggt auch noch das Result mit
end;

begin
  HLog.EnterMethod('Prozedur');
  ...
end; // HLog.ExitMethod wird automatisch aufgerufen (über ein lokales Interface)

var M: HLog.IMethod;
begin
  M := HLog.EnterMethod('Prozedur');
  ...
  M.ExitMethod(Result);
end;
Das "Event" wird allerdings erst richtig abgeschlossen, wenn die Prozedur richtig abgeschlossen wurde (über das Interface), womit auch Folgendes keine Probleme bereitet.
Delphi-Quellcode:
begin
  HLog.EnterMethod('Name der Prozedur'); // eventuell auch ohne Name HLog.EnterMethod;
  ...
  HLog.ExitMethod;
  ...
  HLog.ExitMethod(Result); // hier wird Result nur zwischengespeichert
  ...
end; // hier wird das Result erst geloggt
Bei den ersten Varianten, wo nicht explizit über das IMethod-Interface gegangen wird
und vorallem bei Multithreadanwendungen gibt es keinen physischen Zusammenhang, zwischen den einzelnen Aufrufen.
OK, jetzt könnte man zwar über die ThreadID ganz billig im ExitMethod das IMethod des aktuellen Threads raussuchen, aber davon muß es nicht nur Eines geben ... Stichwort rekursive Aufrufe.

Ich find ja die "globalen" Methoden am handlichsten, aber da fehlt eben die direkte Zusammengehörigkeit.
Weswegen es mit eigentlich am schönsten gefallen würde, das globale ExitMethod behalten zu können.

Gut, ich könnte auch eine Liste führen (als threadvar) und dann statt auf ein treadvar-ResultSave direkt auf das letzte IMethod verweisen, aber über eine globale IMethod-Variable könnte man die Erstellungs/Freigabe-Reihenfolge von verschachtelt erstellten IMethods eines Threads durcheinanderbringen.



Ist halt alles nicht so einfach.
Aber es soll auch was Ordentliches werden, womit ich dann die nächsten Jahre gut leben kann, wenn ich es bei mir überall als Basissystem einsetze.
Ein Therapeut entspricht 1024 Gigapeut.
  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 10:36 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