private void TryConnect() { mConnectionGate.Reset(); lock (mInstanceLock) { NamedPipeClientStream connection = new NamedPipeClientStream(".", PipeName, PipeDirection.InOut, PipeOptions.Asynchronous); while (!connection.IsConnected) { try { connection.Connect(0x3e8); } catch (Exception ex) { Console.WriteLine(string.Format("Exception caught - MessageBusNode.TryConnect: {0}", ex.Message)); } } // Currently not pooling buffers - may want to do this at some point. connection.ReadMode = PipeTransmissionMode.Message; mTransport = new NamedPipeTransport(connection, PipeName); mTransport.MessageReceived += OnMessageReceived; } }
private void ClientConnected(IAsyncResult result) { NamedPipeServerStream asyncState = result.AsyncState as NamedPipeServerStream; asyncState.EndWaitForConnection(result); if (asyncState.IsConnected) { NamedPipeTransport item = new NamedPipeTransport(asyncState, PipeName); item.MessageReceived += new MessageEventHandler(OnMessageReceived); lock (mConnections) { mConnections.Add(item); } } NamedPipeServerStream state = new NamedPipeServerStream(PipeName, PipeDirection.InOut, -1, PipeTransmissionMode.Message, PipeOptions.Asynchronous); state.BeginWaitForConnection(new AsyncCallback(this.ClientConnected), state); }