我有一个场景,使用WPF作为无模式对话的一部分,大大超出了替代方案。但是,我所看到的是,每次调出对话框时,它都会变慢一点,直到最终需要20秒才能启动对话框。
我使用ANTS对其进行了分析,它基本上在我的表单的InitializeComponent部分中指向三个不同位置的ElementHost:创建主机,设置背景颜色(我可以消除),并指定子项。
虽然这是在主UI线程的单独UI线程上发生的(通过创建线程完成,将其设置为STA,然后在其中执行另一个Application.Run(myform)),它仍然锁定主GUI,因为它非常忙碌。
如果你杀了应用程序并重新开始,问题就会消失,并且它会再次表现得很好。代码的其他部分似乎没有减速。
在ElementHost之后我可以做些什么来清理?
答案 0 :(得分:1)
我发现了什么,但不是为什么。
我必须在处理表单时手动处理ElementHost,否则它会保留WPF元素。随着时间的推移,这些都会逐渐积累起来并减慢速度。