2011-04-21 24 views
1

我有一種場景,使用WPF作爲無模式對話框的一部分,大大超出了選擇範圍。但是,我所看到的是每次調出對話框時,它都會變慢一點,直到最終需要20秒才能啓動對話框。WinForms ElementHost因重複使用而變慢

我使用ANTS對它進行了剖析,它基本上指向我的表單的InitializeComponent部分中的三個不同位置的ElementHost:創建主機,設置背景顏色(我可以消除)以及分配子項。

雖然這發生在與主UI線程分離的UI線程上(通過創建線程,將其設置爲STA的公寓,然後在其中執行另一個Application.Run(myform)),但它仍然鎖定了主GUI因爲它非常繁忙。

如果你殺了應用程序並重新開始,問題就消失了,並且它在一段時間內表現很好。代碼的其他部分似乎沒有減慢。

在ElementHost之後有什麼我可以做的清理?

回答

1

我發現了什麼,但不是爲什麼。

我不得不手動處理ElementHost,當表單被處理時,否則它會保持WPF元素不變。這些會隨着時間的推移而逐漸減慢,