因此,我编写了一个WPF应用程序,它从数据库中获取各种数据,然后使用Code Synethesis,它根据数据编写XML文件。问题是,有时在完成编写之后,应用程序似乎只是挂在那里,使用Windows Cursors.Wait图标,如果我单击应用程序,它会完全冻结,我必须从任务管理器关闭应用程序上的进程。 / p>
查看已完成的XML文档(* .xml),其大约100MB到200MB(包括标签和所有内容),具体取决于数据类型。是否可能垃圾收集是应用程序似乎忙碌这么久的原因?有时它会持续30分钟而且它最终会解决,但不知道为什么。
答案 0 :(得分:2)
垃圾收集不是原因。 GC可以轻松地每秒收集数百万个物品,而且很可能你不会坐在那里。
如果您可以在Visual Studio内部进行调试时重复此操作,请单击Break All
以中断执行。然后,使用Threads
工具窗口(Ctrl+D,T
)检查所有正在运行的线程,并切换到每个线程以查看它在哪里等待。如果GUI被冻结,它可能在Main Thread
(GUI线程)内部。
最有可能的是,你有某种死锁,你的应用程序正在等待锁定。