AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread stoppt nicht?

Offene Frage von "Zerolith"
Ein Thema von Zerolith · begonnen am 24. Feb 2005 · letzter Beitrag vom 1. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#1

Thread stoppt nicht?

  Alt 24. Feb 2005, 17:37
Tag!

ich hab mir heut ein kleines Threadobjekt erstellt. Joa.. funktioniert soweit auch bloß bekomm ich kein OnTerminate Ereignis:
Delphi-Quellcode:
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.
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.

bitte um hilfe!!!
danke,
Daniel
Daniel
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Thread stoppt nicht?

  Alt 24. Feb 2005, 20:35
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?
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Thread stoppt nicht?

  Alt 24. Feb 2005, 22:25
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Thread stoppt nicht?

  Alt 24. Feb 2005, 23:40
Zitat:
funktioniert soweit auch bloß bekomm ich kein OnTerminate Ereignis:
Du hast ja kein implementiert.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Thread stoppt nicht?

  Alt 24. Feb 2005, 23:48
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
Daniel
  Mit Zitat antworten Zitat
m.wollert

Registriert seit: 18. Aug 2003
Ort: Heilbronn
92 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Thread stoppt nicht?

  Alt 24. Feb 2005, 23:53
Zitat:
Du hast ja kein implementiert.
Kommt drauf an. Wenn er "extern" etwas handeln möchte, dann benötigt er nur einen entsprechenden Event-Handler. Kann ja sein, daß er den nicht überschreiben möchte. Es wäre jetzt noch interessant, wie die Instanz des Threads erstellt wird.

Michael:)
Michael
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Thread stoppt nicht?

  Alt 24. Feb 2005, 23:59
Delphi-Quellcode:
...
procedure ThreadIsDone(Sender : TObject);
...
With TSyncThread.Create(Console, DB) do OnTerminate := ThreadIsDone;
is grad ausm Kopf muss nicht 100% korrekt sein
Daniel
  Mit Zitat antworten Zitat
m.wollert

Registriert seit: 18. Aug 2003
Ort: Heilbronn
92 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Thread stoppt nicht?

  Alt 25. Feb 2005, 00:07
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:

inherited Create(TRUE); und in Deinem With-Block so:

Delphi-Quellcode:
With TSyncThread.Create(Console, DB) do
begin
  OnTerminate := ThreadIsDone;
  Resume;
end;
[edit] Vor allem sollte FreeOnTerminate noch gesetzt werden, weil sonst der Speicher nicht mehr freigegeben wird! ;) [/edit]


Fehlt in der Abfrage nicht ein abschliessendes Semikolon? (*Nur mal so frag*)

SQL.SQL := 'SELECT * FROM z_wct_configs[b];[/b]';
Michael
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Thread stoppt nicht?

  Alt 25. Feb 2005, 00:18
Zitat von m.wollert:
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: // HAB ICH SCHONMAL

inherited Create(TRUE); und in Deinem With-Block so: // DITO

Delphi-Quellcode:
With TSyncThread.Create(Console, DB) do
begin
  OnTerminate := ThreadIsDone;
  Resume;
end;
[edit] Vor allem sollte FreeOnTerminate noch gesetzt werden, weil sonst der Speicher nicht mehr freigegeben wird! [/edit]


Fehlt in der Abfrage nicht ein abschliessendes Semikolon? (*Nur mal so frag*) // Eigtl nur wenn mehr als eine SQL Anweißung sonst kann man das imho weglassen

SQL.SQL := 'SELECT * FROM z_wct_configs[b];[/b]';
Aber Danke
Daniel
  Mit Zitat antworten Zitat
xman
(Gast)

n/a Beiträge
 
#10

Re: Thread stoppt nicht?

  Alt 25. Feb 2005, 09:25
Zitat von Luckie:
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.

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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz