小编Wie*_*tze的帖子

AvalonDock DocumentContent没有垃圾回收

我创建了一个使用AvalonDock框架的应用程序.关键部分是使用AvalonDock.DocumentContent派生编辑器编辑域模型实体的能力.我遇到了一个问题,发现我的编辑在关闭并从DockingManager.Documents集合中删除后没有被垃圾收集.

经过一些徒劳无功的搜索后,我创建了一个小型测试应用程序,可以通过以下方式重新创建:

  • 在Visual Studio中(我使用的是2008),创建一个名为的新WPF应用程序AvalonDockLeak;
  • 添加对AvalonDock库的引用(我的版本是1.3.3571.0);
  • 添加一个名为的新UserControl Document;
  • 将Document.xmal更改为:

    <ad:DocumentContent x:Class="AvalonDockLeak.Document"
                        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock">
        <Grid>
            <TextBox />
        </Grid>
    </ad:DocumentContent>
    
    Run Code Online (Sandbox Code Playgroud)
  • 将Document.xmal.cs更改为:

    namespace AvalonDockLeak
    {
        using AvalonDock;
    
        public partial class Document : DocumentContent
        {
            public Document()
            {
                InitializeComponent();
            }
    
            ~Document()
            {
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我添加的析构函数能够诊断问题,在方法打开时添加一个断点{,并查看它是否被击中.它总是关闭测试应用程序,但不是更早.

  • 现在将Window1.xaml更改为:

    <Window x:Class="AvalonDockLeak.Window1"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock"
            Title="Memory Leak Test" Height="300" Width="300">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Button Name="NewButton" Click="NewButton_Click" Content="New" Height="26" Width="72" />
            <ad:DockingManager x:Name="DockManager" Grid.Row="1">
                <ad:DocumentPane /> …
    Run Code Online (Sandbox Code Playgroud)

c# wpf garbage-collection avalondock

8
推荐指数
2
解决办法
3248
查看次数

标签 统计

avalondock ×1

c# ×1

garbage-collection ×1

wpf ×1