protected virtual void DisconnectEvent(ClientDisconnectedEvent theEvent) { if (bDisconnectEventHandled == false) { bDisconnectEventHandled = true; lock (DisconnectDatLock) { try { NewMsgEvt.Set(); //set this so that any blocking call to ReceiveData is released } catch { } try { SendingContext.Dispose(); } catch { } } } }