private void Work()
{
MemoryStream stream = new MemoryStream();
byte[] buffer = new byte[1024];
while (_running) {
if (!_socket.IsConnected())
break;
stream.Seek(0, SeekOrigin.Begin);
stream.SetLength(0);
while (_socket.Available > 0) {
_receiving = true;
int read = _socket.Receive(buffer);
if (read <= 0)
continue;
stream.Write(buffer, 0, read);
}
_receiving = false;
if (stream.Length > 0) {
MessageReceived?.Invoke(stream.ToArray());
} else {
Thread.Sleep(200);
}
}
Disconnect();
_thread.Abort();
}