Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TThread und kein Ende in Sicht... (https://www.delphipraxis.net/199963-tthread-und-kein-ende-sicht.html)

Schokohase 7. Mär 2019 08:09

AW: TThread und kein Ende in Sicht...
 
Ich habe deinen Source mal etwas überarbeitet (hier nur die geänderten Teile):
Delphi-Quellcode:
procedure TCustomThread.SetCancel(const Value: Boolean);
begin
  if (FCancel <> Value) then
  begin
    FCancel := Value;
    if Value then
      Terminate;
  end;
end;

procedure TCustomThread.Execute;
var
  I : Integer;
begin
  Stream := TFileStream.Create(FFileName, fmOpenRead);
  try
    FIsOpen:= Stream.Handle <> INVALID_HANDLE_VALUE;
    if FIsOpen then
    begin
      StreamSize := Stream.Size;
      I := 10;
      while (StreamSize div I) > MaxInteger do
        I := I * 10;
      iSize := StreamSize div I;
    end;
    Extract;
  finally
    Stream.Free;
  end;
end;

procedure TCustomThread.Extract;
var
  iRead : Int64;
begin
  if FIsOpen then
  begin
    while (ReadSize <> StreamSize) and (not Terminated) do
    begin
      iRead:= iSize;

      Inc(ReadSize, iRead);

      if (StreamSize - ReadSize) < iSize then
        iSize := StreamSize - ReadSize;

      if Assigned(FOnProgress) then
        Synchronize(DoProgress);

      Sleep(50);
    end;
  end;
end;

procedure TCustomThread.TerminatedSet;
begin
end;

Alter Mann 8. Mär 2019 07:47

AW: TThread und kein Ende in Sicht...
 
Moin,

habe den Denkfehler gefunden:

Zitat:

Delphi-Quellcode:
Delphi-Quellcode:
procedure TForm1.TerminateEvent(Sender : TObject);
begin
  CT.Free;
  Log('TerminateEvent');
end;

Das CT.Free; ist hier Falsch, da der Thread sich ja schon beenden will. Ein erneuter Aufruf verhindert aber die Beendigung, sodass es zu einer Schleife kommt. Anfängerfehler.
Danke an allen für die Hilfe und Entschuldigung.

TiGü 9. Mär 2019 19:36

AW: TThread und kein Ende in Sicht...
 
Jup, stand schon in Beitrag #4.

Alter Mann 9. Mär 2019 20:47

AW: TThread und kein Ende in Sicht...
 
Aber nicht warum= super:twisted:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr.
Seite 2 von 2     12   

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