日期:2014-05-20  浏览次数:20822 次

关于Dispose方法的问题,在线等待
windows   media   player   10   sdk中有个c#使用windows   media   player   com组件的范例。程序功能大致是将一个media   player组件放置在一个Form中,可以做一些简单的操作,如播放,停止等。

大致代码如下:

一个成员变量
private   AxWMPLib.AxWindowsMediaPlayer   Player;

它在这里初始化
public   Form1()
{
InitializeComponent();
                Player.URL   =   "mms://nc.sina.com.cn/ent/200401061.wmv ";
}

private   void   InitializeComponent()
{
    ...
    this.Player   =   new   AxWMPLib.AxWindowsMediaPlayer();
}
如上,我指定Player的URL为一个流媒体文件,以便窗体显示后播放。

这是dispose方法
protected   override   void   Dispose(   bool   disposing   )
{
if(   disposing   )
{
if   (components   !=   null)  
{
components.Dispose();
}
}
base.Dispose(   disposing   );
}

现在的问题是base.Dispose(   disposing   );这句语句会执行很久,大概7-8秒钟的样子,这造成了窗口关闭时应用程序当了的假象。
有谁知道为什么会这句语句需要这么长时间执行。是不是由于用到了com组件的原因?会不会有内存泄漏?怎么解决这个问题?


------解决方案--------------------
up
------解决方案--------------------
不清楚
:)
------解决方案--------------------
这要去看专门讲垃圾清理的书了