我有一个场景,其中使用 WPF 作为无模式对话框的一部分大大优于替代方案。但是,我看到的是,每次我调出对话框时,它都会变慢一点,直到最终需要 20 秒才能调出对话框。
我用 ANTS 对其进行了分析,它在我的表单的 InitializeComponent 部分基本上指向三个不同位置的 ElementHost:创建主机,设置背景颜色(我可以消除),以及分配孩子。
虽然这发生在与主 UI 线程不同的 UI 线程上(通过创建一个线程,将它的单元设置为 STA,然后在其中执行另一个 Application.Run(myform))它仍然锁定主 GUI,因为它非常忙碌的。
如果您杀死该应用程序并重新开始,问题就会消失,并且它会在一段时间内再次运行良好。代码的其他部分似乎没有变慢。
在 ElementHost 之后我可以做些什么来清理吗?