2013-08-11 8 views
0

Я обнаружил, что это похоже, но я не понимаю, как работают внутренние устройства этого объекта, чтобы точно знать. Когда пользователь закрывает форму, это свойство, похоже, надежно возвращает False.Is Me.IsHandleCoated надежный индикатор, чтобы определить, была ли форма закрыта?

Я использую это, когда у меня работает фоновый рабочий стол, и я проверяю это свойство в завершенном событии перед дальнейшей обработкой.

+1

Не совсем, это также False, когда окно еще не было создано. Вы только * действительно заботитесь о IsDisposed. Проверьте [этот ответ] (http://stackoverflow.com/questions/1731384/how-to-stop-backgroundworker-on-forms-closing-event/1732361#1732361) –

+0

Ханс, фоновые процессы в моем приложении всегда ногами в результате нажатия пользователем кнопки, поэтому не было бы способа, чтобы я мог проверять это свойство до того, как была создана форма. Если я попытаюсь вызвать методы в моей форме из рабочего фона и форма закрыта (но еще не удалена), то «Invoke или BeginInvoke не могут быть вызваны в элементе управления до тех пор, пока не будет создан дескриптор окна». Проверка ishandlecreated отлично работает в той ситуации, где me.isdisposed не – Luke

ответ

0

Я бы не использовал это. Соглашаясь с Хансом Пассантом, я бы использовал Me.IsDisposed, потому что это проверит, чтобы убедиться, что он открыт, а затем выключите и удалите память.

+0

Проблема с Me.IsDisposed заключается в том, что она возвращает true после закрытия формы. Он не получает сразу после, только после сбора мусора право? – Luke

+0

«Когда это свойство возвращает true, элемент управления удаляется и больше не может ссылаться как действительный элемент управления Windows. Несмотря на то, что экземпляр элемента управления удален, он по-прежнему сохраняется в памяти до тех пор, пока он не будет удален из памяти через мусор коллекция." -MSDN – iasanator