Exemplo n.º 1
0
            private PipeChannel GetAvailableChannel()
            {
                var currentChannel = channel;

                if (currentChannel == null)
                {
                    lock (this)
                    {
                        if (channel == null)
                        {
                            var clientPipeStream = new NamedPipeClientStream(bindingOption.ServiceName, bindingOption.PipeName, PipeDirection.InOut, PipeOptions.Asynchronous);
                            try
                            {
                                clientPipeStream.Connect();
                            }
                            catch
                            {
                                clientPipeStream.Dispose();
                                throw;
                            }

                            var newChannel = new PipeChannel(clientPipeStream, true);
                            newChannel.DataReceived += new EventHandler <PipeChannelEventArgs>(Channel_DataReceived);
                            newChannel.Disconnected += new EventHandler <PipeChannelEventArgs>(Channel_Disconnected);
                            newChannel.Start();
                            channel = newChannel;
                        }

                        currentChannel = channel;
                    }
                }
                return(currentChannel);
            }
Exemplo n.º 2
0
 public void Start()
 {
     channel.Start();
 }