NamedPipeServerStream.EndWaitForConnection () hängt nur, wenn es verwendet wird

8

Ich versuche, Named Pipes zum ersten Mal zu verwenden. In der MS-Dokumentation hier heißt es:

  

EndWaitForConnection muss für jeden Aufruf von genau einmal aufgerufen werden   BeginWaitForConnection.

Ich versuche also, ein guter kleiner Programmierer zu sein und der Dokumentation zu folgen, aber das EndWaitForConnection() hängt einfach unbegrenzt, wenn ich es benutze.

Also habe ich meinen Code auf ein Minimum reduziert, um zu sehen, ob ich das Problem isolieren kann, aber keine Würfel. Ich habe den folgenden Code aus einer Klasse, die ich geschrieben habe, gezogen. Ich habe es so geändert, dass es auf eine Pipe-Verbindung wartet und dann sofort versucht, auf diese Pipe-Verbindung zu warten:

%Vor%

1) Warum hängt es an EndWaitForConnection() ? Wenn ich meinen Server herunterfahren möchte, bevor ich eine Verbindung erhalten habe, wie kann ich diesen BeginWaitForConnection() -Rückruf im Wesentlichen abbrechen?

2) Nehmen wir an, dass ich das oben erwähnte Problem nicht hatte. Was passiert, wenn 2 Clients versuchen, sich sehr schnell mit meiner Named Pipe zu verbinden?

Erhalte ich einen Callback-Aufruf für jeden von ihnen, oder muss ich auf die erste Verbindungsbenachrichtigung warten, dann schnell EndWaitForConnection() und dann WaitForConnectionCallBack() erneut aufrufen, um wieder auf den nächsten Client zu warten?

Letzteres scheint mir eine Wettlaufbedingung zu sein, weil ich den Verbindungshörer nicht schnell genug einrichten kann.

    
Ultratrunks 04.02.2012, 23:08
quelle

1 Antwort

8

Also, ein Grundskelett der Lösung, die für mich arbeitet, ist wie folgt:

%Vor%

Hier ist der Servercode.

%Vor%     
Ultratrunks 07.02.2012, 18:06
quelle