private void destoryLinker() { lock (_desObj) { if (_linker != null) { _linker.StreamDataReceived -= linker_StreamDataReceived; _linker.StreamHeaderReceived -= linker_StreamHeaderReceived; _linker.ErrorOccurred -= linker_ErrorOccurred; _linker.Dispose(); _linker = null; } } }
private void _adapter_ReceiveCompleted(object sender, SocketHelper.Events.ReceiveEventArgs args) { if (args.ByteLenght >= 4) { int code = BitConverter.ToInt32(args.ReceivedBytes, 0); switch (code) { case StreamEntityCode.StreamAddress: { StreamAddress sa = StreamAddress.DeserializeTo(args.ReceivedBytes); destoryLinker(); Console.WriteLine("Uri:" + sa.Url); _linker = StreamLinkerManager.Instance.GetStreamLinker(sa); if (_linker != null) { _linker.StreamHeaderReceived += linker_StreamHeaderReceived; _linker.StreamDataReceived += linker_StreamDataReceived; _linker.ErrorOccurred += linker_ErrorOccurred; } } break; } } }