2012-06-04 77 views
1

我正在面對Silverlight應用程序的一些問題。silverlight中奇怪的內存泄漏5

我的應用程序看起來像一個圖像管理器。您可以打開一些圖像,編輯,查看等。

我的問題是,當您添加一些圖像和刪除這些圖像後,內存不會返回到您添加這些圖像之前使用相同的數量。如果您重複這些操作(添加圖像並刪除這些圖像後),內存不會停止上升。

爲什麼發生?

我創建了一個新的silverlight 5項目來重新創建這個場景,測試一些代碼並試着找到正在發生的事情。

在新的項目中,我有一個StackPanel,並與這些行動3個按鈕:

1-添加1000個按鈕,一個StackPanel;

2-刪除StackPanel的所有子項;

3-調用GC.Collect;

我多次撥打同樣的動作:添加(1),刪除(2),調用GC(3)

後,我反覆幾次同樣的動作(添加和刪除)。我觀察到我的第一個應用程序的結果相同,內存不停止上升。即使在我調用GC.Collect之後,內存也不會釋放。我現在不會發生什麼事情。這是Silverlight的內存泄漏嗎?

+3

你重視事件要添加的按鈕?如果你添加一些示例代碼,這將非常有幫助。 – Stainedart

回答

0

您的電腦是「平板電腦」嗎?

如果您的計算機上正在運行自動化客戶端,Silverlight自動化將啓動。最常見的是:

  • Tablet PC輸入服務(換句話說,所有的「像平板電腦的PC)
  • 自動化測試工具
  • 屏幕閱讀器(和其他訪問性軟件)

這使Silverlight變得完全混亂,並導致一些bug,並且幾乎總是會讓所有的東西都像瘋了一樣泄漏。

我在我的HTML設置此參數禁用自動化:

<param name="windowless" value="true" /> 

你可以在這裏閱讀更多:Silverlight + MVVM + Bindings = Memory leaks?