OutOfMemoryException处理和Windows Media Player SDK

时间:2013-01-05 22:34:14

标签: c# out-of-memory wmplib

它必须如何运作:

WindowsMediaPlayer windowsMediaPlayer = new WindowsMediaPlayer(); 
IWMPMediaCollection collection = windowsMediaPlayer.mediaCollection;
IWMPMedia newMedia = collection.add(path);  //causes OutOfMemoryException after some thousands  method's iterations

我试图以这种方式避免它:

try
{
    newMedia = collection.add(path);
    return newMedia;
}
catch (Exception)
{
    collection = null;
    GC.Collect();
    GC.WaitForPendingFinalizers();
    WindowsMediaPlayer windowsMediaPlayer = new WindowsMediaPlayer();
    IWMPMediaCollection collectionNew = windowsMediaPlayer.mediaCollection;
    return CreateNewMedia(collectionNew, path);
}

但是这不起作用 - 我仍然在catch内得到无限的异常循环。

1 个答案:

答案 0 :(得分:0)

你不能像普通人那样处理OutOfMemoryException。您可能在某种程度上处理这个问题的原因是为了保存应用程序的状态,以便为应用程序的使用者提供恢复丢失数据的方法。 我的意思是没有任何意义调用GC.Collect或其他什么,因为应用程序无论如何都会死,但是CLR会在此之前给你通知。

因此,要解决此问题,请检查应用程序的内存消耗,32bit计算机上的内存消耗量必须与RAM 1.2GB相关,或控制您拥有的集合中的元素数量,对于普通列表,不能超过32位上的2GB内存和64位上的