AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi FreeOnTerminate -> Terminated bleibt stets false
Thema durchsuchen
Ansicht
Themen-Optionen

FreeOnTerminate -> Terminated bleibt stets false

Ein Thema von hirnstroem · begonnen am 16. Apr 2007 · letzter Beitrag vom 16. Apr 2007
 
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

FreeOnTerminate -> Terminated bleibt stets false

  Alt 16. Apr 2007, 12:50
'loha Folks,

auf einem Formular befindet sich ein Timer, welcher bei jedem Interval überprüft ob ein bestimmter Thread noch lebt oder nicht. Je nach Thread-Status führt der Timer dann bestimmte Methoden aus. Nun ist es so, dass ich dem Thread beim kreieren mitteile dass er sich selber freigeben soll, wenn er seine Arbeit vollendet hat (FreeOnTerminate := True). Leider scheint der Thread sich aber niemals terminieren zu wollen, obwohl er zweifelsfrei bereits allen Code abgearbeitet hat (wenn ich am Ende des Threads z.B. noch ein Beep hinsetzte, so ertönt dieses stets). Im Timer, in welchem überprüft wird ob der Thread noch lebt, heisst es aber stets, dass Terminated = False sei, der Thread also noch nicht wirklich terminiert ist. Nachfolgend noch ein bisschen Code, wobei ich dazu sagen muss, dass auch wenn alles bis auf die erste Zeile auskommentiert ist, der Thread schon nicht mehr terminiert. Weiss jemand Rat?

Delphi-Quellcode:
procedure TReadNewKeyThread.Execute;
var
  ReceivedCode, SmallestCode, NumberCode: String;
begin
  ReceivedCode := DI.ReadNewKey(FUserSession.DataSet.FieldByName('Address').Value);
  if ReceivedCode <> '-1then
  begin
    SmallestCode := IntToHex(DI.FindSmallestCode(HexToInt(ReceivedCode)), 16);
    NumberCode := DI.ConvertCodeToUniqueNumber(SmallestCode);
    IWServerController.SearchKeyCode(SmallestCode);
    if IWServerController.ADODataSet_Key.RecordCount <> 0 then
    begin
      if FUserSession.UserLanguage = 'deCHthen FUserSession.ShowMessage := 'Fehler: Der Schlüssel mit der Nummer ' + NumberCode + 'wurde bereits in der Datenbank erfasst'
      else if FUserSession.UserLanguage = 'enUSthen FUserSession.ShowMessage := 'Failure: A key with the number ' + NumberCode + ' already exists in the database';
      ReadKeyVisible := False;
    end
    else
    begin
      KeyCode := SmallestCode;
      KeyNumber := NumberCode;
      ReadKeyString := KeyNumber;
      if KeyNumber <> '00000000000000then
      begin
        ReadKeyEnabled := True;
        ReadKeyVisible := True;
      end;
    end;
  end
  else
  begin
    ReadKeyString := '';
    ReadKeyEnabled := False;
    ReadKeyVisible := False;
  end;
end;
Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
 


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:32 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