Когда вызывается Control.DestroyHandle? - PullRequest
2 голосов
/ 04 сентября 2008

Когда это называется? Точнее, у меня есть элемент управления, который я создаю - как я могу отпустить дескрипторы, когда окно закрыто. В обычном win32 я бы сделал это во время wm_close - DestroyHandle .net эквивалентно?


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

void Dispose(bool disposing) {
    otherObject.Event -= myEventHandler;
}

Ответы [ 2 ]

3 голосов
/ 04 сентября 2008

Обычно DestroyHandle вызывается в методе Dispose. Поэтому вам необходимо убедиться, что все элементы управления расположены, чтобы избежать утечек ресурсов.

2 голосов
/ 04 сентября 2008

Dispose звонит DestroyHandle, но не всегда. Если я закрою родительское окно, то Windows уничтожит все дочерние окна. В этой ситуации Dispose не будет вызывать DestroyHandle (так как он уже уничтожен). Другими словами, DestroyHandle вызывается для уничтожения окна, оно не вызывается при разрушении окна.

Решение состоит в том, чтобы переопределить либо OnHandleDestroyed, либо Dispose. Я выбираю Dispose.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...