1

我有一个场景,其中使用 WPF 作为无模式对话框的一部分大大优于替代方案。但是,我看到的是,每次我调出对话框时,它都会变慢一点,直到最终需要 20 秒才能调出对话框。

我用 ANTS 对其进行了分析,它在我的表单的 InitializeComponent 部分基本上指向三个不同位置的 ElementHost:创建主机,设置背景颜色(我可以消除),以及分配孩子。

虽然这发生在与主 UI 线程不同的 UI 线程上(通过创建一个线程,将它的单元设置为 STA,然后在其中执行另一个 Application.Run(myform))它仍然锁定主 GUI,因为它非常忙碌的。

如果您杀死该应用程序并重新开始,问题就会消失,并且它会在一段时间内再次运行良好。代码的其他部分似乎没有变慢。

在 ElementHost 之后我可以做些什么来清理吗?

4

1 回答 1

1

我发现了什么,但没有发现为什么。

我必须在处理表单时手动处理 ElementHost,否则它会使 WPF 元素保持不变。这些会随着时间的推移而积累并减慢速度。

于 2011-04-22T18:50:21.223 回答