Wäre zu schön um wahr zu sein, aber wenn der Hauptthread hängt, dann wird nichts neu gezeichnet, zumindest kenne ich es so
Zudem habe ich hier sogar noch den Beweis, dass es nicht gehen kann:
Delphi-Quellcode:
procedure TMarqueeThread.Execute;
begin
inherited;
repeat
if WaitForSingleObject(FStop, FInterval) = WAIT_TIMEOUT then
Synchronize(DoOnTimer);
until Terminated;
end;
Die Animation selbst wird via Thread berechnet, okay. Aber dann wird hier Synchronize aufgerufen, sodass die ProgressBar neu gezeichnet wird. Hängt der Hauptthread, dann steht somit auch der TMarqueeThread, da das Synchronize erst dann zurückkehrt, wenn der Hauptthread die gegebene Methode abgearbeitet hat, aber der steht ja...
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)