Почему проигрыватель Windows Media не закрывается методом player.Close ()? - PullRequest
1 голос
/ 28 января 2012

Я создаю объект медиаплеера в простом консольном приложении, чтобы воспроизвести какой-нибудь файл. Хотя медиаплеер запускается успешно, когда я использую метод close (), процесс все еще выполняется, и окно медиаплеера не закрывается. Что должно быть сделано? вот код, который я написал ..

WindowsMediaPlayer player= new WindowsMediaPlayer();
player.OpenPlayer("c:\\abc.wmv");
Thread.Sleep(2000);
player.controls.stop();
player.close();

Здесь процесс не завершается, а файл продолжает работать. Как я могу закрыть приложение?

Ответы [ 2 ]

1 голос
/ 28 января 2012

Интерфейс автоматизации не может заставить игрока выйти.Менее идеальный подход - убить его:

        var prc = Process.GetProcessesByName("wmplayer");
        if (prc.Length > 0) prc[prc.Length - 1].Kill();

Лучшая ловушка мыши - встроить плеер в собственный графический интерфейс, что легко сделать с помощью Winforms.

0 голосов
/ 28 января 2012

Я думаю, вам нужно закрыть COM-объект, вызвав Marshal.ReleaseComObject. COM не знает, что вы никогда не будете использовать плеер снова, поэтому он не может закрыть процесс.

Не полагайтесь на сборку мусора для этого, потому что это может никогда не произойти, если нет давления памяти Вызовите Marshal.ReleaseComObject вручную.

...