//raw channel disconnected. void RawChannelDisconnected(object sender, System.EventArgs e) { lock (_disconnectLockObj) { if (_rawChannel != null) { _rawChannel.Buffer = null; _rawChannel.ReceivedData -= RawReceivedData; _rawChannel.Opened -= Opened; _rawChannel.Opening -= Opening; _rawChannel.Closed -= Closed; _rawChannel.Closing -= Closing; _rawChannel.Faulted -= Faulted; _rawChannel.Disconnected -= Disconnected; _rawChannel.Connected -= Connected; _rawChannel.ReceivedDataSegment -= ReceivedDataSegment; _rawChannel = null; } if (_multiPacketManager != null) { _multiPacketManager.Dispose(); _multiPacketManager = null; } if (_parser != null) { _parser.ParseSucceed -= SegmentParseSucceed; _parser.Dispose(); _parser = null; } } DisconnectedHandler(null); }
/// <summary> /// 异步关闭 /// </summary> /// <param name="callback">回调函数</param> /// <param name="state">状态</param> /// <returns>返回异步结果</returns> public IAsyncResult BeginClose(AsyncCallback callback, object state) { if (_multiPacketManager != null) { _multiPacketManager.Dispose(); _multiPacketManager = null; } return(_rawChannel.BeginClose(callback, state)); }
/// <summary> /// 断开 /// </summary> public void Disconnect() { if (_rawChannel != null) { _rawChannel.Disconnect(); } if (_multiPacketManager != null) { _multiPacketManager.Dispose(); _multiPacketManager = null; } }
/// <summary> /// 关闭 /// </summary> public void Close() { if (_rawChannel != null) { _rawChannel.Close(); _rawChannel = null; } if (_multiPacketManager != null) { _multiPacketManager.Dispose(); _multiPacketManager = null; } }