Thema: Delphi Problem mit Threads

Einzelnen Beitrag anzeigen

Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit Threads

  Alt 27. Okt 2004, 15:48
Bei folgender Procedure in einen Thread bekomme ich eine AV, wenn ich den Thread mit Resume starte.
Führe ich ihn per Execute aus funktioniert alles.

Delphi-Quellcode:
type
  TCalulateCheckSum = class(TThread)
  private
    { Private-Deklarationen }
  protected
    sha1 : TlbSHA1;
    SHA1Digest : TSHA1Digest;
    procedure UpdateListItem1;
    procedure UpdateListItem2;
    procedure Execute; override;
  public
    ListItem : TListItem;
    Checksum : string;
    Filename : string;
  end;

implementation

uses unit2;

procedure TCalulateCheckSum.Execute;
begin
  { Thread-Code hier einfügen }
  Synchronize(UpdateListItem1);
  sha1 := TLBSha1.Create(nil);
  sha1.HashFile(Filename);
  sha1.GetDigest(SHA1Digest);
  checksum := BufferToHex(SHA1Digest, SizeOf(SHA1Digest));
  sha1.Free;
  Synchronize(UpdateListItem2);
end;

Aufruf :

Delphi-Quellcode:
procedure TForm2.ListViewCheck;
var t : integer;
   CheckSum : TCalulateCheckSum;
begin
  if Checksumrunning then exit;

  for t := 0 to pred(ListView2.Items.Count) do begin
     if ListView2.Items[t].SubItems[1] = 'to be hashed...then begin
      Checksumrunning := true;
      Checksum := TCalulateCheckSum.Create(true);
      Checksum.ListItem := ListView2.Items[t];
      Checksum.Filename := ListView2.Items[t].Caption;
      CheckSum.FreeOnTerminate := true;
      Checksum.resume; // <<-- wenn ich hier execute schreibe funzt alles.
      exit;
    end;
  end;
end;
Jemand ne Idee woran das liegen könnte ?
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat