void Pipe_OnBroken(object sender, PipeBrokenEventArgs e) { var p = e.Pipe as DuplexPipe; p.OnBroken -= this.Pipe_OnBroken; p.StopPipe(); p.ClientA.Close(); p.ClientB.Close(); lock (_pipesReadWriteLock) { this._pipes.Remove(p); } }
private void Pipe_OnBroken(object sender, PipeBrokenEventArgs e) { var p = e.Pipe as DefaultPipe; p.OnBroken -= this.Pipe_OnBroken; p.UnPipe(); _logger?.LogInformation($"Pipe_OnBroken" + $" A={p.ClientA.EndPoint.ToString()}, B={p.ClientB.EndPoint.ToString()}, Cause={Enum.GetName(typeof(PipeBrokenCause), e.Cause)}"); p.ClientA.Close(); p.ClientB.Close(); lock (_pipesReadWriteLock) { this._pipes.Remove(p); } }