/// <summary>
/// Dispose of the TCP client.
/// </summary>
/// <param name="disposing">Dispose of resources.</param>
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
try
{
_WriteSemaphore.Wait();
_ReadSemaphore.Wait();
if (_SslStream != null)
{
_SslStream.Close();
}
if (_NetworkStream != null)
{
_NetworkStream.Close();
}
if (_TcpClient != null)
{
_TcpClient.Close();
_TcpClient.Dispose();
_TcpClient = null;
}
}
finally
{
_ReadSemaphore.Release();
_WriteSemaphore.Release();
}
_IsConnected = false;
}
}