![]() |
Thread stoppt nicht?
Tag!
ich hab mir heut ein kleines Threadobjekt erstellt. Joa.. funktioniert soweit auch bloß bekomm ich kein OnTerminate Ereignis:
Delphi-Quellcode:
Es gibts auch keine Fehler meldung - nur im Hauptprogramm - in einer Schleife wo geprüft wird ob der Thread fertig ist läuft alles weiter.
unit uSyncThread;
interface uses Classes, ZMySQLProxyUnit, uConsole; type TZSyncThread = class(TThread) private FResult : TZResult; procedure WriteDone(); procedure WriteError; public SQL : TZMySQLProxy; Console : TZConsole; Constructor Create(ASQL : TZMySQLProxy; AConsole : TZConsole); protected procedure Execute; override; end; implementation { ZSyncThread } constructor TZSyncThread.Create(ASQL : TZMySQLProxy; AConsole : TZConsole); begin Console := AConsole; SQL := ASQL; inherited Create(False); end; procedure TZSyncThread.Execute; begin SQL.SQL := 'SELECT * FROM z_wct_configs'; FResult := SQL.Execute; if FResult.ZMessageType = zError then Synchronize(WriteError) else Synchronize(WriteDone) // Normalerweiße wird hier "gestoppt" die WriteDone wird nicht aufgerufen end; procedure TZSyncThread.WriteDone; begin Console.WritelnEx('[ DONE ]'); end; procedure TZSyncThread.WriteError; begin Console.WritelnEx('[ ERROR ]'); Console.WritelnEx(FResult.ZMessage); end; end. bitte um hilfe!!! danke, Daniel |
Re: Thread stoppt nicht?
Sorry dass ich pushe - Aber der Topic is schon so weit zurück gerutscht und es ist (für mich) ziemlich wichtig!
kann mir keiner helfen? |
Re: Thread stoppt nicht?
Auch wenn es für dich wichtig ist, ist es unerwünscht Beiträge innerhalb von 24 Stunden zu "pushen". Stell deine Frage das nächste mal eben früher.
|
Re: Thread stoppt nicht?
Zitat:
|
Re: Thread stoppt nicht?
ja sorry - eh hab ich in ner anderen unit - die die den Thread erstellt.
Hab grad festgestellt dass die Unit "funktionier" sobald sie in ner VCL Anwendung ist - bei mir is es jetzt z.Zt eine Konsolenanwendung (sollte doch eigtl keinen Unterschied machen?) die später zum SystemService ausgebaut wird. Edit: Ach und eh: wenn ich Syncronize aufrufe stoppt er sofort. (alles ausser dem Thread läuft weiter) cya |
Re: Thread stoppt nicht?
Zitat:
Michael:) |
Re: Thread stoppt nicht?
Delphi-Quellcode:
is grad ausm Kopf muss nicht 100% korrekt sein
...
procedure ThreadIsDone(Sender : TObject); ... With TSyncThread.Create(Console, DB) do OnTerminate := ThreadIsDone; |
Re: Thread stoppt nicht?
Innerhalb Deines Creates wird der Thread direkt ausgeführt -- kann sein, daß der Event-Handler hier schon garnicht mehr gesetzt wird, weil der Thread bereits durch ist... Kann mich aber auch täuschen.
Versuche es mal mit dem abgeleiteten Create:
Delphi-Quellcode:
und in Deinem With-Block so:
inherited Create(TRUE);
Delphi-Quellcode:
[edit] Vor allem sollte FreeOnTerminate noch gesetzt werden, weil sonst der Speicher nicht mehr freigegeben wird! ;) [/edit]
With TSyncThread.Create(Console, DB) do
begin OnTerminate := ThreadIsDone; Resume; end; Fehlt in der Abfrage nicht ein abschliessendes Semikolon? (*Nur mal so frag*)
Delphi-Quellcode:
SQL.SQL := 'SELECT * FROM z_wct_configs[b];[/b]';
|
Re: Thread stoppt nicht?
Zitat:
|
Re: Thread stoppt nicht?
Zitat:
sag mal, ich bin zwar noch nicht lange hier aber dein angekotze von irgendwelchen Leuten in verschiedenen Threads fällt mir auch schon negativ in der ersten Woche auf. Schade das es so Leute gibt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 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 by Thomas Breitkreuz