簡體   English   中英

Contentcontrol.Content內存泄漏中的WPF用戶控件

[英]WPF Usercontrol in Contentcontrol.Content Memory Leak

問題是我的棱鏡autofac .NET 4.5.1 WPF應用程序中發生內存泄漏。 我減少了這個問題,這個問題也出現在沒有棱鏡和autofac的本地WPF應用程序中。

啟動時,應用程序使用34 MB內存。 我在主窗口的contentcontrol中設置了一個具有大量內存分配的usercontrol新實例。 內存高達900 MB。 現在,我將清理用戶界面,並進行測試以清除usercontrol中的內部集合,將contentcontrol的內容設置為null ...但是ram的大小為140 MB。 我如何在啟動和清理后釋放RAM。

當我創建usercontrol而不在contentcontrol的內容中設置它時,內存達到38 MB。 那沒問題。 當我在另一個控件中使用usercontrol時,可以釋放“ complete” ram嗎?

主窗口:

<ContentControl x:Name="myContentControl"></ContentControl>

后面的代碼:

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    this.myContentControl.Content = new UserControl1();
}

private void Button_Click_2(object sender, RoutedEventArgs e)
{
    this.myContentControl.Content = null;
    GC.Collect();
}

用戶控件:

<Grid>
    <DataGrid x:Name="myTestListView" Background="Purple" Height="280></DataGrid>
</Grid>

碼:

public partial class UserControl1 : UserControl
{
    private List<string> Testitems = new List<string>(); 

    public UserControl1()
    {
        InitializeComponent();
        this.Testitems = new List<string>();
        for (int i = 0; i < 1000000; i++) this.Testitems.Add(i.ToString());
        this.myTestListView.ItemsSource = this.Testitems;
    }
}

考慮用ObservableCollection替換Usercontrol1集合后備字段,該泄漏將消失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM