CSharp - Windows 媒体播放机为什么没有关闭 player.Close() 方法?

  显示原文与译文双语对照的内容
0 0

我正在一个简单的控制台应用程序中创建一个媒体播放器对象来播放一些文件。 虽然媒体播放器正在成功启动,但是当我使用 close() 方法时,仍然运行流程和 media player窗口。 需要 做 什么 ? 这是我写的代码。


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

这里进程不退出,文件仍在运行。 如何关闭应用程序?

时间: 原作者:

0 0

自动化接口没有强制播放机退出的方法。 不理想的方法是杀死它:


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

更好的鼠标陷阱是将播放器嵌入到你自己的GUI中,很容易使用 Winforms 。

原作者:
0 0

我想你需要通过调用 Marshal.ReleaseComObject 来关闭com对象。 com不知道你不会再使用播放机,所以它无法关闭进程。

因为没有内存压力,所以不要依赖垃圾收集,因为它可能永远不会发生。 手动调用 Marshal.ReleaseComObject 。

原作者:
...