[英]WMPLib.dll not running Dispose() correctly. How can I play mp3s on Windows Mobile?
使用Interop.WMPLib.dll在Windows Mobile 6.x上播放mp3文件,但是我无法让GC彻底清除自身。 对于运行时间较长的应用程序(一个小时或更长时间),我需要每5分钟播放一小段mp3(20-30秒),因此我无法承受GC无法正确处置lib的负担。 @ajhvdb在SO上讨论了一个解决方案( 为什么这个简单的Mobile Form在使用播放器时没有关闭 ),但对我来说这不是一个很好的解决方案,因为计时器hack不一致(有时我需要使用10,000的计时)或者更多)。
有人可以推荐一种更好的处理Dispose()的方法,还是可以让我使用Windows Mobile 6.x播放mp3文件的另一种方法?
我目前所拥有的(感谢@ajhvdb)是:
public void Dispose()
{
try
{
Stop();
}
catch (Exception)
{
}
// need this otherwise the process won't exit?!
try
{
int ret = Marshal.FinalReleaseComObject(myPlayer);
}
catch (Exception)
{
}
myPlayer = null;
GC.Collect();
//If you don't do this, it will not quit
//http://www.eggheadcafe.com/software/aspnet/31363254/media-player-freezing-app.aspx
for (int s = 0; s < 100; s++)
{
Application.DoEvents();
Thread.Sleep(1);
}
GC.WaitForPendingFinalizers();
//MessageBox.Show("Application Exiting");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.