代码之家  ›  专栏  ›  技术社区  ›  Andrew Garrison

Silverlight数据窗体内存泄漏

  •  1
  • Andrew Garrison  · 技术社区  · 16 年前

    一些背景

    我注意到,设置DataForm的EditTemplate(来自Silverlight工具包)可能会导致DataForm不会被垃圾收集。因此,DataForm的父控件也不能被垃圾收集,从而导致非常严重的内存泄漏。

    下面是一些XAML来演示这个案例。

        <toolkit:DataForm HorizontalAlignment="Stretch" Margin="10" VerticalAlignment="Stretch">
            <toolkit:DataForm.EditTemplate>
                <DataTemplate>
                    <toolkit:DataField Label="Dummy Binding:">
                        <TextBox Text="{Binding DummyBinding, Mode=TwoWay}" />
                    </toolkit:DataField>
                </DataTemplate>
            </toolkit:DataForm.EditTemplate>
        </toolkit:DataForm>
    

    我打开了一个 issue on CodePlex . Issue有一个附件 project 这证明了这一点。

    所以,我的问题是

    还有人遇到过这个问题吗?更重要的是,有人知道任何解决办法吗?如何强制此数据窗体被垃圾收集?

    2 回复  |  直到 15 年前
        1
  •  2
  •   jamisonLikeCode    15 年前

    对任何关心这个问题的人…微软发布了一个解决方案。

    Silverlight 4 Service Release

        2
  •  1
  •   Andrew Garrison    15 年前

    事实证明,此问题并不特定于DataForm控件,而且它实际上是Silverlight4运行时的问题。所有使用数据模板的内置控件和用户控件都存在此问题,如中更详细的讨论 this thread . TimHeuer(Silverlight程序管理器)对线程有响应,并提出了一个可能的混合结果的解决方案。他确实提到了他们已经有了一个进入测试的修复程序,所以希望一个更新可以很快发布。