public async void EnqueuePacket(UserPacket packet) { _commandProcessor.Enqueue(packet); if (Interlocked.CompareExchange(ref _executeTask, null, null) == null) { _executeTask = Task.Factory.StartNew(ExecutePackets); await _executeTask; _executeTask = null; } }