[英]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.