У меня есть приложение wpf, которое использует переходы для анимации. На моем главном экране есть такой элемент:
<transitionalsControls:TransitionElement Name="DisplayPage" Width="1024" Height="768">
<transitionalsControls:TransitionElement.Transition>
<transitionalsTransitions:RotateTransition Duration="0:0:0.5" Angle="90" />
</transitionalsControls:TransitionElement.Transition>
</transitionalsControls:TransitionElement>
В первый раз, когда я делаю
DisplayPage.Content = someUserControl;
, я получаю долгую задержку рендеринга. Иногда составляет полсекунды, иногда в пределах 5 секунд. Когда я смотрю на это в «Diagnoti c Tools», «Память процесса» увеличивается со временем, пока я не установил someUserControl. Когда я это делаю, он останавливается на время возникновения проблемы с рендерингом. Когда он, наконец, dr aws, полоса памяти процесса возобновляется и появляется желтая галочка, где произошла задержка, указывающая на сборку мусора. Когда я его проверяю, это невынужденная сборка мусора Gen 1, а продолжительность составляет всего несколько миллисекунд.
Я удалил все, кроме нескольких меток, и проблема все еще сохраняется.
Это задержка рендеринга сборку мусора, и если да, то как мне это обойти? Это в основном при запуске приложения и выглядит ужасно. После этого приложение работает нормально.
Есть идеи? Я перепробовал все, что мог придумать, чтобы заставить G C отойти от проблемы, но ничего не изменилось.