Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: verhindern: Klick auf Titelleiste stoppt Programm

  Alt 27. Nov 2010, 13:38
Delphi-Referenz durchsuchenQueue leistet im Prinzip das gleiche wie Delphi-Referenz durchsuchenSynchronize mit einem entscheidenden Unterschied:

Synchronize( AMethod ) arbeitet die Methode in einem synchronisiertem Kontext ab (klar, das wissen wir alle).
Wenn in dieser Methode jetzt eine Wahnsinns-Berechnung durchgeführt wird, die z.B. so 10 Sekunden dauert, dann wird auch der Thread (aus dem Synchronize aufgerufen wurde) für genau diese 10 Sekunden quasi unterbrochen.

Queue( AMethod ) übergibt das (intern) an eine MessageQueue und der HauptThread arbeitet diese ab, wenn er dafür Zeit hat.
Der Thread läuft aber direkt danach weiter und wird nicht durch die lange Abarbeitung unterbrochen.

Somit hat Synchronize ein blockierendes und Queue eine nicht blockierendes Verhalten.
Ansonsten sind die gleich

Aber in Sir Rufos Anwort werden eben diese in eine Queue geschoben.
Denn der Thread macht ja eigentlich was anderes.
Meiner Ansicht nach müssen diese Methoden in der Queue aber dann
von einem anderen Thread abgearbeitet werden. Ansonsten wär es ja witzlos.
Wird die doch auch ... vom HauptThread oder jedem anderen, den man dabei mitgibt (genau wie beim Synchronize)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat