public override void Start()
{
if( 1 == Interlocked.Exchange(ref _isstarted, 1) ) {
//We can't start twice... too bad, so sad:
throw new Exception("Restart never allowed");
}
Interlocked.Exchange(ref _running, 1);
_listen_thread.Start();
_send_thread.Start();
}