private void Close()
{
lock (this)
{
if (Socket == null)
return;
try
{
if (_keepAlive != null)
{
_keepAlive.Dispose();
_keepAlive = null;
}
Socket.Disconnect(true);
Socket.Close();
Socket = null;
Stream.Dispose();
Stream = null;
MessageFactoryContext.RequestCompleted -= OnRequest;
MessageFactoryContext.ContinueResponseRequested -= On100Continue;
MessageFactoryContext.Reset();
}
catch(Exception err)
{
_logger.Warning("Failed to close context properly.", err);
}
}
Disconnected(this, EventArgs.Empty);
}