![]() |
AW: Try..except außerhalb des VCL-Threads
Guck dir mal das hier an:
![]() Wenn du anstatt von
Delphi-Quellcode:
die Methode
Application.ShowException
Delphi-Quellcode:
aufrufst, müsstest du die Exception im Application.OnException Event behandeln können.
Application.HandleException
|
AW: Try..except außerhalb des VCL-Threads
Ja, das ist der Punkt. Wie man die Exception Behandlung aus dem Thread rausbekommt und in den Mainthread auswertet. Ich habe es bisher immer mit Nachrichten gelöst, die ich im Fehlerfall aus dem Thread verschickt habe.
|
AW: Try..except außerhalb des VCL-Threads
Der Artikel von jfheins klingt zunächst prima, aber leider würde auch hier dank des Synchronized der Thread angehalten, so lange der Handler "unterwegs" ist. Oder kann ich Application.HandleException gefahrlos im Threadkontext aufrufen? (Hab gerade kein Delphi hier - wenn das letztlich auch nur ein PostMessage macht, wäre das zumindest eine nette Kapselung der von Luckie und mir genannten Methode :))
|
AW: Try..except außerhalb des VCL-Threads
Synchronize = synchrone Synchronisierung
Queue = asynchrone Synchronisierung
Delphi-Quellcode:
Man könnte statt dem ShowMessage auch ShowException verwenden, aber dann muß man bei asyncrhoner Anzeige entweder das ExceptObject klonen oder es von der Exceptionbehandlung abtrennen und anschließend natürlich manuell freigeben.
try
//... except on E: Exception do begin S := E.Message; //TThread.Queue(nil, procedure // in Threads ohne eine TThread-Instanz, bzw. ohne direkten Zugang dazu Queue(procedure // in einer TThread-Instanz begin ShoweMessage(S); end); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 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