Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

Thread WaitFor wird durch Application.ProcessMessages blockiert

  Alt 18. Feb 2011, 23:33
Hallo,

ich habe ein Problem wenn ich einen Thread vorzeitig beenden will.

Ich lasse den Thread in einer For Schleife einige Daten in ein TStringGrid eintragen.
Dies kann bis zu 10 Sekunden dauern. Damit die Form dabei nicht einfriert habe ich ein Application.ProcessMessages drinnen.

Möchte ich nun aber nach 5s schon abrechen indem ich Terminate und WaitFor aufrufe belibt es bei WaitFor stehen. Wenn das Update des TStringGirds fertig ist kann ich ohne Probleme den Thread beenden.

Ein Versuch auf diese Art geht nicht:
Delphi-Quellcode:
if not Terminated then
Application.ProcessMessages
Das Terminated bleibt auf False und dadurch bleibt es wieder hängen.

Application.ProcessMessages gefällt mir sowieso nicht aber wie kann man ansonsten ein "angebliches" Einfrieren der Anwendung verhindern?
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat