2017-08-21 93 views
-2

編輯
I changed the title because I found the real cause of the freeze. The cause is in my awnser首先控制顯示凍結UI

在WPF中,你第一次顯示控制,它可能會很慢,因爲XAML將被解析。下次顯示控件時,它將是即時的,因爲XAML已經被解析。

我試圖通過使用可視化加載系統來減少UI凍結,該系統使視覺崩潰並使其在低優先級調度程序調用中可見。這項工作與ItemsControl很多項目,但它仍然不解決第一個解析UI凍結。

是否有減少XAML解析引起的凍結的好方法?

我在考慮解析應用程序啓動時的所有XAML。這會減慢啓動速度,但應用程序在此之後將不會凍結。 難點在於如何獲取所有BALM文件(已編譯的XAML)以及如何將結果存儲在WPF查找它們的相同位置。

+1

但編譯應用程序時,XAML文件會編譯到BAML中。我會進一步探討你需要推遲UI加載的事實,因爲它太複雜了,也許這是你應該解決的根本原因。 –

+2

如果您使用的是最新版本的Visual Studio,我鼓勵您使用Performance Profiler工具來確保您具有您認爲自己的性能瓶頸。在VS2017中,可以在Debug> Performance Profiler下找到它。 –

回答

0

我錯了。 XAML解析並不是來自減速。它來自某個靜態構造器,他正在加載一些dll。這就是爲什麼它只是第一次慢。我將靜態初始化移動到一個線程。