【问题标题】:Is Using Mainwindow in child windows in WPF causes mamory leaks?在 WPF 的子窗口中使用 Mainwindow 会导致内存泄漏吗?
【发布时间】:2015-05-13 09:45:19
【问题描述】:

我正在开发一个 WPF 应用程序。其中我总共有 5 个 wpf 窗口。我在子窗口中使用变量(在主窗口中声明为公共)。所以我在子窗口中引用主窗口

例如在子窗口中我使用以下代码(修改后的构造函数)

 public CaptureOptions(MainWindow parent)
    {
        InitializeComponent();
        parentWindow = parent;

    }

我在所有 4 个子窗口中都这样做。 这会导致任何内存泄漏吗?

谢谢,

【问题讨论】:

  • 也许您应该尝试使用 MVVM 模式,而不是在每个 ChildWindow 中引用 MainWindow。

标签: c# wpf memory-leaks


【解决方案1】:

MainWindow 大概是您的应用程序窗口。它将在整个过程中保持活动状态,因此没有什么可以通过杂散引用不恰当地延长它的生命周期。但是,您的主窗口引用子窗口,因此这些子窗口将在主窗口引用它们时保持活动状态。这可能意味着您使对象保持活动的时间比需要的时间长,但如果您有 5 个子窗口并且引用相同的五个实例,这并不是真正的内存泄漏。

【讨论】:

    【解决方案2】:

    只要您不在 MainWindow 中保留对任何子项的引用,这不是内存泄漏。

    您的示例不是内存泄漏,因为 child 引用了相反的 MainWindow,这意味着它没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 2021-03-23
      • 2021-09-25
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多