Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Synchronisierung asynchroner Kommunikation über Messages

  Alt 4. Feb 2006, 17:35
Hi,
nun ja mit sleep legst du nun mal den ganzen Prozess schlafen. Das heißt natürlich auch, dass in der Zeit weder eine Message verarbeitet wird, noch dürfte sie empfangen werden.
Ich weiß natürlich nicht, um was für eine Art von Kommunikation es sich bei dir handelt, aber sieht auch nicht sehr Threadsafe aus. Würdest du auf CALL 1 und CALL 2 warten und 2 kommt kurz nach 1, könnte es sein, dass du 1 nie siehst oder ein falsches Ergebnis in 1 kopierst. Aber das ist eine andere Sache.

Definier dir ein Ereignis, dass speziell für das empfangen von einer Nachricht zuständig ist (ein Nachfahre von TEvent). Dann kannst du deine Schleife durch ein NachfahreVonTEvent.WaitFor(TimeOut) ersetzen. Dieses liefert dir dann entweder ein Timeout oder dass ein Signal empfangen wurde. Um das Signal zu senden, einfach NachfahreVonTEvent.setEvent aufrufen. (beide male als Instanz zu verstehen)

Hoffe das hilft,
Gruß Der Unwissende
  Mit Zitat antworten Zitat