Дескриптор окна гарантированно будет действительным и не будет использоваться повторно до тех пор, пока окно живет.Это индекс, как в природе, действительный глобально и, в целом, ведет себя больше как глобальный идентификатор, чем как дескриптор ядра (которые действительны только в одном процессе и указатель как в природе).Как только окно закрывается, дескриптор окна может быть повторно использован и теперь указывает на другое окно.
Но что не очевидно, если время жизни Form
и нижележащих окон window
совпадают.Я смутно помню, что в VCL Delphi (который является духовным предшественником Windows.Forms) некоторые изменения свойств воссоздали окно в фоновом режиме.
Существование свойства Control.RecreatingHandle выглядит следующим образомубедительный признак того, что время жизни базового окна действительно может быть короче времени жизни элемента управления .net.Что может привести к изменению Form
в течение срока его службы.
Control.RecreateHandle Метод RecreateHandle вызывается всякий раз, когда необходимы параметры для нового элемента управления, но использование вызова UpdateStyles для CreateParams недостаточно.Этот метод также вызывает DestroyHandle и CreateHandle и устанавливает RecreatingHandle в true.http://msdn.microsoft.com/en-us/library/system.windows.forms.control.recreatehandle.aspx
Из описания этого метода я заключаю, что дескриптор окна действительно может меняться в течение времени жизни формы.