Ejemplo n.º 1
0
        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);
        }