Я использую C#, но, вероятно, то же самое в VB.NET. Я C++ Я бы просто установил точку прерывания для деструктора объектов, чтобы знать, когда/если он был удален/свободен. Я понимаю, что в winforms базовый класс вызывает SupressFinalize, так что деструкторы формы никогда не вызываются, поэтому я думаю, что я не могу так поступать. Есть ли другой способ узнать, был ли объект собран мусором? Похоже на catch-22, потому что если бы вы были, вам, вероятно, понадобилась бы ссылка на проверку, но, удерживая эту ссылку, собранный мусор не раздавит ее.Как узнать, собрана ли форма формы winform?
Я читал это What strategies and tools are useful for finding memory leaks in .NET?, и я понимаю, что есть инструменты и/или фреймворки для обработки этой «большой картины», и я уверен, что через несколько недель я попробую несколько из этих методов. На данный момент у меня очень сильное чувство, что у меня может быть утечка, связанная с тем, что формы не удаляются, поэтому просто хочу проверить это одно (и я хочу знать только ради знания).
Я знаю, что могу смотреть Dispose, но я уверен, что Dispose можно назвать, но все равно в конечном итоге с объектом формы, все еще находящимся вокруг. Чтобы проверить эту теорию, я создал известную проблему, в которой я зарегистрировался для события обратного вызова в своей форме, а затем закрыл форму, не отменив ее. Конечно же, Dispose был вызван (и «распоряжение» было правдой), но позже, когда событие было уволено, оно все равно ударило мою точку останова внутри формы, которая предположительно была удалена.
Если вы можете запустить событие, которое запускает обработчик событий в расположенной форме, то у вас определенно есть ошибка. И очень вероятно, что это утечка объекта формы. –