public void Dispose()
{
stop = true;
if (messagePump != null) {
messagePump.Wait();
}
if (_client != null) {
_client.Dispose();
_client = null;
}
}