Autor Beitrag
colaka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Sa 21.05.11 09:42 
Hallo,

in meiner WaWi lade ich jeden Tag nacheinander die Artikellisten von diversen Großhändlern herunter, um Preise und Verfügbarkeiten zu aktualisieren. Den Download der einzelnen Lieferanten will ich jetzt in einen Thread auslagern, damit das Programm nicht einfriert, wenn aus irgendeinem Grund der Download mal nicht bis zum Ende durchläuft.

Den Thread starte ich mit einem Schalter:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.ButtonDownloadClick(Sender: TObject);
begin
  Thread := TMeinThread.Create(True);
  Thread.FreeOnTerminate:=true;
  Thread.Resume;
  Image.Picture.LoadFromFile('dt.gif');
end;


Testweise beende ich den Thread dann mit dem Abbruch-Schalter:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.ButtonAbbruchClick(Sender: TObject);
begin
  IdFTP.Abort;
  if Assigned(Thread) then Thread.Terminate;  //Thread löschen
  Image.Free;
end;


Auf den ersten Blick scheint das auch zu funktionieren, aber wenn ich danach den nächsten Lieferanten herunterladen will und damit den Thread erneut starten möchte, erhalte ich eine Zugriffsverletzung.

Wie kann ich den Thread erneut starten?

Danke Ebi


Zuletzt bearbeitet von colaka am Sa 21.05.11 10:12, insgesamt 1-mal bearbeitet
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 21.05.11 09:59 
Was ist denn Image? Wird die vor dem erneuten Aufruf von Image.Picture.LoadFromFile('dt.gif'); wieder neu erzeugt? Denn mit Image.Free; zerstörst du das Image - wenn du danach wieder darauf zugreifst, gibt es eine Zugriffsverletzung.

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: colaka