private void ProcessReceiveQueue(object state) { while (true) { byte[] buffer; if (mReceiveQueue.TryDequeue(out buffer)) { mMavLink.ParseBytes(buffer); } else { // Empty queue, sleep until signalled mReceiveSignal.WaitOne(); } } }