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); }
public void Start() { channel.Start(); }