小编Sid*_* G.的帖子

MediaPlayer中的内存泄漏

有人可以解释为什么以下程序内存不足吗?

class Program
{
    private static void ThreadRoutine()
    {
        System.Windows.Media.MediaPlayer player = new System.Windows.Media.MediaPlayer();
    }

    static void Main(string[] args)
    {
        Thread aThread;
        int iteration = 1;

        while (true)
        {
            aThread = new Thread(ThreadRoutine);
            aThread.Start();
            aThread.Join();

            Console.WriteLine("Iteration: " + iteration++);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

公平地说,我得到的具体例外是System.ComponentModel.Win32Exception"没有足够的存储空间来处理此命令".尝试创建新的MediaPlayer时会发生异常.

MediaPlayer没有实现IDisposable接口,所以我不确定是否还需要其他清理.我当然没有在MediaPlayer文档中找到任何内容.

c# multithreading garbage-collection threadpool

8
推荐指数
1
解决办法
885
查看次数

如何处理 System.Windows.Media.MediaPlayer

问题很简单,可以概括为:

我怎样才能让这个while循环退出?

System.Windows.Media.MediaPlayer player = new System.Windows.Media.MediaPlayer();
WeakReference test = new WeakReference(player);

player.Close();
player = null;

while (test.IsAlive && test.Target != null)
{
    System.GC.Collect();
}
Run Code Online (Sandbox Code Playgroud)

我搜索了文档,发现没有办法处理这个对象,while 循环永远不会退出。

c#

5
推荐指数
1
解决办法
1452
查看次数