写入大于100MB的XML文件后垃圾收集会导致应用程序冻结吗?

时间:2012-11-07 12:56:00

标签: c# xml garbage-collection codesynthesis

因此,我编写了一个WPF应用程序,它从数据库中获取各种数据,然后使用Code Synethesis,它根据数据编写XML文件。问题是,有时在完成编写之后,应用程序似乎只是挂在那里,使用Windows Cursors.Wait图标,如果我单击应用程序,它会完全冻结,我必须从任务管理器关闭应用程序上的进程。 / p>

查看已完成的XML文档(* .xml),其大约100MB到200MB(包括标签和所有内容),具体取决于数据类型。是否可能垃圾收集是应用程序似乎忙碌这么久的原因?有时它会持续30分钟而且它最终会解决,但不知道为什么。

1 个答案:

答案 0 :(得分:2)

垃圾收集不是原因。 GC可以轻松地每秒收集数百万个物品,而且很可能你不会坐在那里。

如果您可以在Visual Studio内部进行调试时重复此操作,请单击Break All以中断执行。然后,使用Threads工具窗口(Ctrl+D,T)检查所有正在运行的线程,并切换到每个线程以查看它在哪里等待。如果GUI被冻结,它可能在Main Thread(GUI线程)内部。

最有可能的是,你有某种死锁,你的应用程序正在等待锁定。