Ich habe eine andere Frage! Bitte schauen Sie sich dieses Beispiel an:
%Vor%Alles, was ich will - ist eine Ausnahme in der TMyClass.Proc1 zu bekommen und es so zu werfen:
%Vor%Bitte sag mir, wie kann ich so etwas machen? Vielen Dank!
oh! noch eine Sache - im Codieren auf Delphi 5, also habe ich keine "FatalException" -Eigenschaft von TThread oder etwas über ..
Sie können AcquireExceptionObject()
verwenden:
AcquireExceptionObject gibt einen Zeiger auf das aktuelle Ausnahmeobjekt zurück und verhindert, dass das Ausnahmeobjekt freigegeben wird, wenn der aktuelle Ausnahmebehandler beendet wird.
Dann können Sie den Zeiger zu einem anderen Thread senden und wenn Sie es dort anheben, wird es für Sie freigegeben, andernfalls müssen Sie ReleaseExceptionObject()
, um es zu befreien.
Kurz gesagt, Sie können das nicht so machen, wie Sie es möchten.
Sie müssen das Ausnahmeobjekt klonen, die Kopie an Ihren anderen Thread übergeben (z. B. mit der Synchronize-Methode oder mit einer anderen Synchronisationstechnik) und dieses Ausnahmeobjekt dort auslösen.
Am besten fangen Sie die Ausnahme in der Ausführungsschleife des Threads ab und schreiben die Nachrichteneigenschaft und den Klassennamen in ein privates Zeichenfolgenfeld. Dies kann dann öffentlich gemacht werden, indem eine Eigenschaft mit kritischen Abschnitten in den Gettern und Settern verwendet wird, um sicherzustellen, dass der Zugriff threadsicher ist. Alles, was Sie jetzt tun müssen, ist, in den Thread einen Prozess zu übergeben, der die Exception behandelt und sie mit einer Synchronisation aufruft. Ich werde einen Beispielcode posten, wenn ich zu meinem Computer komme, da ich im Moment mein iPhone verwende
Tags und Links multithreading delphi