Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Delay(sleep) nicht synchron,gegenseitige Blockade

  Alt 20. Mai 2008, 16:47
Stell dir folgende Geschichte vor:
Zitat:
Dein Chef A sagt dir, du solltst eine Akte holen.
Auf dem Weg kommt die Chef B in die Quere und verlangt du sollst ihm einem Kaffe kochen.
Du machst also zuerst den Kaffee und bringst dann die Akte.
Dann gibt's Mecker von Chef A, weil du so spät dran bist.
Hättest du Chef B gesagt, dass du gerade keine Zeit hast, hätte es das Problem nicht gegeben.

In deinem Beispiel tritt ein vergleichbares Problem auf:
durch Aufruf von Application.ProccessMessages werden Mausklicks und Tastatureingaben sofort bearbeitet und die aktuelle Funktion (Delay()) solange unterbrochen.

In einer richtigen Anwendung würde man einfach die meisten Buttons (oder besser Actions) ausschalten (.Enabled := False) bis der Vorgang angeschlossen ist.
Das wäre die sauberste Lösung denn der Benutzer sieht schon optisch, dass die Anwendung beschäftigt ist und keine neuen Befehle annehmen kann.

Andere Möglichkeit: Innerhalb von Delay() statt Application.ProcessMessages nur die notwendigen Paint-Messages verarbeiten.
Andreas
  Mit Zitat antworten Zitat