如何判断窗口是不是被释放

Posted

技术标签:

【中文标题】如何判断窗口是不是被释放【英文标题】:How to determine if window is disposed如何判断窗口是否被释放 【发布时间】:2011-04-27 10:55:25 【问题描述】:

当应用程序关闭时,我在 WPF MainWindow1.Xaml 中有一个函数。但在未知情况下,用户可以使用“文件 > 关闭”按钮以另一种方式关闭应用程序。我只需要在“关闭”方法中知道当前 MainWindow1.xaml 是否已经被释放。但我找不到任何财产。

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

你可以试试

var source = PresentationSource.FromVisual(yourWindow)

如果source 为空或source.IsDisposed == true,则表明您的窗口已关闭。

【讨论】:

source.IsDisposed 将始终为false,否则PresentationSource.FromVisual 将不会返回源代码。【参考方案2】:

您可以附加到Window 上的Closed 事件。 当这个事件被调用时,窗口关闭。实际上我必须更正:根据the MSDN documentation,这仅意味着您无法阻止在调用此事件时关闭窗口。 如果收听Closed 事件不够好,那么这是另一种选择:How do you tell if a WPF Window is closed?

【讨论】:

感谢您的回复 ChrisWue。我会这样尝试:` schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.App" ShutdownMode="OnExplicitShutdown" /> ` 与 MainWindow1.IsLoaded 属性.. . 不起作用。查看这里的情况:link 我认为您正在尝试在窗口已经关闭时调用Close。我不确定你的目标是什么,也许你可以解释更多。

以上是关于如何判断窗口是不是被释放的主要内容,如果未能解决你的问题,请参考以下文章

如何判断目标 c 中是不是释放了按钮?

DELPHI 用TThread如何判断线程是不是存在 并且释放线程

如何使用 JavaScript 判断 DOM 对象是不是在窗口外? [复制]

如何判断我的视图控制器是不是会从内存中释放?

有没有办法以编程方式判断 FastMM 是不是没有释放特定的内存块?

C++ 如何判断鼠标有没有在窗口上? 纯API 不是MFC