0

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

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

4

1 回答 1

2

垃圾收集不会是这个原因。GC 每秒可以轻松收集数百万个对象,而且很可能您没有那么多对象。

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

最有可能的是,您遇到了某种死锁,并且您的应用程序正在等待获取锁。

于 2012-11-07T13:04:22.050 回答