public void Process() { CancellationToken cancellationToken = new CancellationToken(false); while (true) { Message <CMD> message = IncomingMessages.Take(cancellationToken); Console.WriteLine(message.Header.Size); switch (message.Header.Id) { case CMD.Chat: Console.WriteLine("Chat: " + message.Extract <UTF8String>()); break; default: Console.WriteLine($"Unknown command: {message.Header.Id}"); break; } } }