![]() |
[Threads] auf Suspended warten
Hallo,
wie kann ich in meine Hauptroutine warten bis ein Thread Suspended ist? Ich setzte nämlich einen Bool im Thread auf True, dann wird der aktuelle Arbeitsschritt zu Ende geführt und suspendiert sich danach selbst. Wenn ich in der Hauptroutine ein
Delphi-Quellcode:
mache, bekommt der thread anscheinend gar keine Rechenzeit mehr.
while not Thread.Suspended do
Sleep(100); ALso am besten die Rechenzeit an den Thread abgeben. Danke! Sebastian |
Re: Thread auf Supended warten
Häh? Wo bleibt denn da der witz eines Threads? :gruebel:
Wenn Du im Hauptprogramm darauf wartest, dass der Thread mit etwas fertig ist, dann kannst Du es doch gleich im Hauptthread machen...? :? |
Re: Thread auf Supended warten
Ich habe es jetzt mit einer Delay-Funktion gelöst. Wo liegt denn der Unterschied zwischen Delay und Sleep? Hier der Link zu einigen Möglichkeiten:
![]() |
Re: Thread auf Supended warten
Zitat:
|
Re: Thread auf Supended warten
dass dein thread keuine rechenzeit bekommt könnte wohl am sleep liegen. denn das dient ja dazu dass der thread keine rechenzeit bekommt :roll: oder verstehe ich das problem falsch?
|
Re: [Threads] auf Suspended warten
ich denke auch, dass Sleep nicht nur den Hauptthread sondern auch alle anderen Threads lahmlegt. Delay finde ich nicht sehr elegant, funktioniert aber. Gibt es denn keinen richtigen Befehl, der Rechenzeit an Threads abgibt? So etwas wie WaitForSingleObject, aber für das Suspendieren..
|
Re: [Threads] auf Suspended warten
Zitat:
![]() |
Re: [Threads] auf Suspended warten
Rechenzeit wird mit Application.ProcessMessages freigegeben.
Aber bist du dir sicher, dass du auf ein Suspend warten möchtest? Sollte Suspend nicht durch den Hauptthread gesetzt werden um den Thread zu unterbrechen? Wenn du jedenfalls auf irgendwas wartest gibt es folgende Möglichkeiten
Delphi-Quellcode:
// Wartezeit ms warten und währenddessen Rechenzeit freigeben
var ticks : Int64; begin ticks := GetTickCount; while not (GetTickCount - time) >= Wartezeit do begin Application.ProcessMessages; end; end; // Warten bis irgendeine Bedingung erfüllt ist begin while not Bedingung do begin Application.ProcessMessages; end; end |
Re: [Threads] auf Suspended warten
Zitat:
![]() Zitat:
![]() Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 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