C# 内存泄漏(?)在包含WPF scrollviewer的WPF面板上,并在其中托管WindowsFormsHost
我的WPF面板包含一个WPF ScrollViewer,它反过来在WindowsFormsHost中托管各种WinForms用户控件。现在,有时,当我调整Scrollviewer(即WindowsFormsHost)的内部内容以使滚动条生效时,我会看到整个面板的调整性能出现严重滞后。说到这里,我注意到Panel_SizeChanged事件处理程序在这些延迟期间不断受到攻击(而当我没有遇到延迟时,它只受到1到2次攻击)。有人能告诉我问题出在哪里吗 我是否应该尝试将主WPF面板本身放入WPF scrollviewer中C# 内存泄漏(?)在包含WPF scrollviewer的WPF面板上,并在其中托管WindowsFormsHost,c#,wpf,C#,Wpf,我的WPF面板包含一个WPF ScrollViewer,它反过来在WindowsFormsHost中托管各种WinForms用户控件。现在,有时,当我调整Scrollviewer(即WindowsFormsHost)的内部内容以使滚动条生效时,我会看到整个面板的调整性能出现严重滞后。说到这里,我注意到Panel_SizeChanged事件处理程序在这些延迟期间不断受到攻击(而当我没有遇到延迟时,它只受到1到2次攻击)。有人能告诉我问题出在哪里吗 我是否应该尝试将主WPF面板本身放入WPF scr
public MyWPFPanel()
{
this.Content = new ScrollViewer() { Content = new WindowsFormsHost() { Child = _grid, ClipToBounds = true, }, CanContentScroll = true, HorizontalScrollBarVisibility = ScrollBarVisibility.Auto ,VerticalScrollBarVisibility = ScrollBarVisibility.Auto };
AllowClose = false;
}
大小更改处理程序中的代码是什么?有什么吗?忘了加东西了_上面代码中的网格是一个WinForms面板(WinForms用户控件的放置位置)。该面板的大小更改的处理方式如下:foreach(this.Controls中的var控件){if(控件是ControlContainer){(控件是ControlContainer){(控件是ControlContainer).AdjustPosAndSize(this.Width,this.Height);}没有递归调用。这可能是OnResize中的递归调用,控件的大小已调整,这可能会影响父级调整大小,从而再次引发SizeChanged。size changed处理程序中的代码是什么?有什么吗?忘了加东西了_上面代码中的网格是一个WinForms面板(WinForms用户控件的放置位置)。该面板的大小更改的处理方式如下:foreach(this.Controls中的var控件){if(控件是ControlContainer){(控件是ControlContainer){(控件是ControlContainer).AdjustPosAndSize(this.Width,this.Height);}没有递归调用。这可能是OnResize中的递归调用,控件的大小已调整,这可能会影响父级调整大小,从而再次引发SizeChanged。