![]() |
Thread anhalten / pausieren
Mahlzeit :)
Ich bastel aktuell an einem simplen Downloadmanager der für meine Bedürfnisse zurechtgeschnitten ist. Mitlerweile funktioniert der auch nur möchte ich ihn erweitern indem der Download in einem eigenen Thread läuft. Da ich mich damit noch nicht auskenne habe ich mich ersteinmal durch dutzende Forenbeiträge und Tuts gewälzt und nun ersteinmal ein Tetsprogramm gebaut welches in einem Thread eine Schleife startet (spätere Download soll auch wiederholt werden) und den aktuellen Schleifendurchlauf wieder zurücksendet. Zu meinem Glück fehlt nun nur noch die Möglichkeit die Schleife zu pausieren und wieder aufzuwecken. Dazu habe ich folgendes versucht:
Delphi-Quellcode:
Der Compiler schreit danach das 'Schleife.Resume' vom Typ boolean sein muss - eine Abänderung auf ' if (if Schleife.Resume = true) then ' funktioniert auch nicht wegen "Inkompatible Typen".
procedure TForm3.PauseClick(Sender: TObject);
begin try if Schleife.Resume then Schleife.Suspended else Schleife.Resume except end; end; PS: Schleife ist eine Klasse vom Typ TSchleife (also meine Threadklasse heißt TSchleife) |
Re: Thread anhalten / pausieren
Delphi-Quellcode:
procedure TForm3.PauseClick(Sender: TObject);
begin try if Schleife.Suspended then Schleife.Resume else Schleife.Suspend; except //was soll denn das hier? end; end; |
Re: Thread anhalten / pausieren
Überlege dir einmal was du machst...
Resume ist eine Prozedur, die den Thread fortsetzt, die gibt aber nix zurück. Suspended ist eine Eigenschaft, die angibt, ob der Thread gerade pausiert ist... Zudem brauchst du an der Stelle kein try..except, es sei denn deine Threadvariable kann nil sein und das solltest du besser richtig abfangen. Wie es richtig ist, hat DeddyH ja schon geschrieben wie ich sehe, ich hoffe du verstehst auch was da anderes passiert und was bei dir falsch war... |
Re: Thread anhalten / pausieren
Okay danke an Euch beiden - Für Richtigstellung und Erklärung :dp:
EDIT: zu der exception - Wenn ich die rauslasse und auf meinen Pauseknopf drücke sobald die Schleife durch ist kommt eine Fehlermeldung "Thread Fehler: Das Handle ist ungültig (6)" - ich denke mal das liegt daran dass der Thread nicht mehr exisiert nachdem er fertig gezählt hat. |
Re: Thread anhalten / pausieren
Es ist aber ungünstig den Thread von außen mit Suspend anzuhalten. Gib dem Thread lieber eine Mitteilung, dass er sich selber anhalten soll.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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