(Moderator)
Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
Delphi 2007 Enterprise
|
Re: Welches Form des wechselseitigen Auschlusses(Semaphore)?
25. Feb 2008, 15:35
Das läuft in einem Thread ab... Der Thread heißt 'TAcquireDataThread'. Ihm übergibst du den Port (die 'Adresse') und der macht das dann für dich, also antriggern, warten, Daten lesen (max 3x) etc... Über das OnTerminate-Event teilt er dir mit, das er fertig ist (fehlerfrei oder auch nicht). Das blockiert deine Anwendung nicht und Du kannst problemlos mehrere davon abfeuern. Wenn immer nur ein Leser an einem bestimmten Port lauschen darf, dann erzeugst/öffnest du beim Thread-Beginn eine Semaphore mit Namen 'Port<Portnummer>'. So ist sichergestellt, das immer nur ein Thread pro Port aktiv ist...
Alternativ kannst du den Thread auch fehlerbedingt terminieren lassen, wenn es die Sempahore schon gibt.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
|