public void ProcessMessageQueue(ConnectorMessageHandler msgProcessor) { if (!Connected) { return; } if (msgQueue.Out.Count == 0) { // would block for accquiring lock msgQueue.Swap(); } while (msgQueue.Out.Count > 0) { var msg = msgQueue.Out.Dequeue(); msgProcessor(this, msg); } }