WPF渲染问题

时间:2020-08-04 02:49:55

标签: c# wpf garbage-collection

我有一个wpf应用,该应用使用Transitionals进行一些动画处理。我的主屏幕具有这样的元素:

<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秒。当我在“诊断工具”中查看它时,“过程内存”会随着时间的推移前进,直到我设置someUserControl。当我这样做时,它会在渲染问题期间停止。最终绘制完毕后,“进程内存”栏将恢复,并在出现延迟的黄色刻度线处指示垃圾回收。当我检查它时,这是一个未经强制的第1代垃圾收集,持续时间只有几毫秒。

我删除了所有内容,除了几个标签,问题仍然存在。

此渲染是否延迟了垃圾回收,如果可以的话我该如何解决?这基本上是在应用程序启动时,看起来很糟糕。发生之后,该应用程序运行正常。

有什么想法吗?我已经尝试过一切我想过的要强制执行GC并回避问题的方法,但是没有任何改变。

1 个答案:

答案 0 :(得分:0)

我建议在过渡器宿主控件中的 XAML 代码中定义过渡控件。 当您从 C# 代码重置控件时,它们可能会被 GC 收集并需要重新创建它们。

相关问题