2013-06-21 37 views
1

我創建了一個WPF應用程序,並且我的客戶端問我內存消耗在每個操作中都會增加。他說他檢查了TaskManager(是的,我也檢查過)。TaskManage中WPF應用程序的內存消耗

我檢查了使用ANTS的任何內存泄漏,並且我失敗了。我已經清除了我的應用程序中的內存泄漏問題(衆所周知,內存泄漏和內存消耗不同)。但仍相同內存消耗增加每一個操作,說例如選擇列表框中的項目

這是我已經使用的CS代碼。

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     ListBoxItem item = (PinnedListBox.SelectedItem as ListBoxItem); 
     PinnedListBox.Items.Remove(item); 
     UnPinnedListBox.Items.Add(item); 
    } 

    private void button2_Click(object sender, RoutedEventArgs e) 
    { 
     ListBoxItem item1 = (UnPinnedListBox.SelectedItem as ListBoxItem); 
     UnPinnedListBox.Items.Remove(item1); 
     PinnedListBox.Items.Add(item1); 
    } 

在點擊Button1的,從PinnedItems的項目轉移到未鎖定的,並且將Button2的的OnClick,項目轉讓從取消固定釘扎。

有人請告訴我這件事。

在此先感謝。

KSAM

+0

您好,看看這個:http://stackoverflow.com/questions/how-to-ask。您至少應該將問題縮小到您的代碼的某些可疑部分,然後在此處發佈此代碼。調試您的應用程序是不可能的,無需查看源代碼。 –

+0

增加的內存對於託管的c#應用程序來說並不是非正常的。 AFAIK垃圾收集器決定何時收集未使用的內存,直到它增長。 – dowhilefor

+0

@ Klaus78使控制不可見?您知道,在WPF中,不可見控件仍然存在並消耗內存,它們甚至可以接收事件並根據可見性標誌位於佈局過程中。 – dowhilefor

回答

1

WPF應用程序使用相比的Winforms應用相對較大量的存儲器。 但即使如此,當你的應用程序正在運行時,操作系統會根據應用程序的需要爲它提供內存。在某個時刻,你的應用程序將做垃圾收集,基本上釋放內存。

你可以通過最小化你的應用程序來做一個簡單的技巧來釋放一些內存。

還看到:http://windows.microsoft.com/en-my/windows-vista/what-do-the-task-manager-memory-columns-mean