我正在處理一個應用程序,該應用程序顯示一些可以由用戶關閉或自動關閉的子窗口。在調試一些正在拋出的異常時,我發現我正試圖在已經關閉的窗口上調用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