有人可以解释为什么以下程序内存不足吗?
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文档中找到任何内容.
问题很简单,可以概括为:
我怎样才能让这个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 循环永远不会退出。