2012-06-04 36 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?