/// <summary> /// Called when an asynchronous DVD command is completed. /// </summary> /// <param name="p1">The command event handle.</param> private void OnCmdComplete(IntPtr p1) { try { ServiceRegistration.Get <ILogger>().Debug("DVD OnCmdComplete"); if (!_pendingCmd || _dvdInfo == null) { return; } IDvdCmd cmd; int hr = _dvdInfo.GetCmdFromEvent(p1, out cmd); if (hr != 0 || cmd == null) { ServiceRegistration.Get <ILogger>().Debug("DVDPlayer: DVD OnCmdComplete GetCmdFromEvent failed"); return; } if (cmd != _cmdOption) { ServiceRegistration.Get <ILogger>().Debug("DVDPlayer: DVD OnCmdComplete UNKNOWN CMD!!!"); Marshal.ReleaseComObject(cmd); return; } Marshal.ReleaseComObject(cmd); Marshal.ReleaseComObject(_cmdOption); _cmdOption = null; _pendingCmd = false; ServiceRegistration.Get <ILogger>().Debug("DVDPlayer: DVD OnCmdComplete OK."); } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Debug("DVDPlayer: OnCmdComplete() {0} {1} {2}", ex.Message, ex.Source, ex.StackTrace); } }