private void OnReadResult(IAsyncResult ar)
{
NetworkStream stream = mTcpClient.GetStream();
int numberOfReadBytes;
try
{
numberOfReadBytes = stream.EndRead(ar);
}
catch
{
numberOfReadBytes = 0;
}
if (numberOfReadBytes == 0)
{
// connection has been closed
Close();
return;
}
// received byte and trigger event notification
byte[] buffer = (byte[])ar.AsyncState;
mReadBuffer.Write(buffer, 0, numberOfReadBytes);
try
{
OnHandleRead();
}
catch (Exception e)
{
Logger.ErrorLine(e.Message);
}
stream.BeginRead(buffer, 0, buffer.Length, OnReadResult, buffer);
}