Почему проигрыватель Windows Media не закрывается методом player.Close()?
Я создаю объект медиаплеера в простом консольном приложении, чтобы воспроизвести какой-нибудь файл. Хотя медиаплеер запускается успешно, когда я использую метод close(), процесс все еще выполняется, и окно медиаплеера не закрывается. Что должно быть сделано? вот код, который я написал..
WindowsMediaPlayer player= new WindowsMediaPlayer();
player.OpenPlayer("c:\\abc.wmv");
Thread.Sleep(2000);
player.controls.stop();
player.close();
Здесь процесс не завершается, а файл продолжает работать. Как я могу закрыть приложение?
2 ответа
Интерфейс автоматизации не может заставить игрока выйти. Менее идеальный подход - убить его:
var prc = Process.GetProcessesByName("wmplayer");
if (prc.Length > 0) prc[prc.Length - 1].Kill();
Лучшая ловушка для мыши - встроить плеер в собственный графический интерфейс, что легко сделать с помощью Winforms.
Я думаю, вам нужно закрыть COM-объект, вызвав Marshal.ReleaseComObject. COM не знает, что вы никогда не будете использовать плеер снова, поэтому он не может закрыть процесс.
Не полагайтесь на сборку мусора для этого, потому что это может никогда не произойти, если нет давления памяти. Вызовите Marshal.ReleaseComObject вручную.