private void ReadCommandAsyncCallback(IAsyncResult result) { if (CommandStream != null && CommandStream.IsConnected) { var command = CommandMessage.FromBytes(Command); switch (command.CommandType) { case CommandType.Viseme: lock (Lock) { VisemeQueue.Enqueue(command.Viseme); } break; case CommandType.VoiceCommand: lock (Lock) { VoiceCommandQueue.Enqueue(command.VoiceCommand); } break; case CommandType.KinectBody: lock (Lock) { KinectBodyQueue.Enqueue(command.KinectBody); } break; case CommandType.KinectFace: lock (Lock) { KinectFaceQueue.Enqueue(command.KinectFace); } break; case CommandType.KeyPress: var keyPress = command.KeyPress; break; case CommandType.KeyDown: var keyDown = command.KeyDown; lock (Lock) { if (keyDown < 256) { KeyPressed[keyDown] = true; } } break; case CommandType.KeyUp: var keyUp = command.KeyUp; lock (Lock) { if (keyUp < 256) { KeyPressed[keyUp] = false; } } break; case CommandType.MouseMove: break; default: throw new NotImplementedException(); } } BeginReadCommand(); }