我正在处理一个应用程序,该应用程序显示一些可以由用户关闭或自动关闭的子窗口。在调试一些正在抛出的异常时,我发现我正试图在已经关闭的窗口上调用Hide()
等方法;这个特殊的代码分支对两种情况都是常见的,我没有注意到这一点。如何判断WPF窗口是否关闭?
我的第一个想法之一是寻找一个Window
上的财产,这表明窗户已关闭。我似乎无法找到一个。在WinForms中,我希望IsDisposed属性有一个可靠的指标,表单已被关闭(它不会可靠地用于对话框,但我不用对话框工作)。我没有看到任何东西相当于Window
。 Window.Close()
的文档似乎并未指出由该方法更改的任何属性。我是否错过了一些显而易见的东西,或者是唯一知道窗口是否已关闭以处理事件的方法?对于简单的任务来说,这似乎是一种苛刻的要求。
该属性不能从另一个线程访问,并调用一个调用安置在窗口块无限。所以我最终使用了我自己的实例变量,并以不需要同步的方式访问它(在OnClosed方法的开始处isClosed = true,然后再次阅读它)。 – ygoe 2012-02-22 09:17:24
如果事件仍在处理中,这不起作用。例如,如果按钮单击处理程序关闭一个窗口,然后打开另一个窗口,并且第二个窗口的初始化检查第一个“IsLoaded”,它将返回“true”。 – nmclean 2014-02-26 16:16:29