WPF - window.show () никогда не освобождает свою память?

Поэтому я новичок в WPF и у меня возникают проблемы с тем, что мои окна не освобождают память после того, как я открываю их с помощью .Show (). Я в принципе хочу открыть немодальный диалог. То, что я вижу, происходит, когда память открывается, когда я открываю новое окно, а затем, когда я закрываю его с помощью кнопки выхода в правом верхнем углу, память никогда не падает. Есть идеи по освобождению памяти?

12.10.2009 22:59:46
Что делает окно, когда оно открывается?
Simon Fox 12.10.2009 23:04:54
2 ОТВЕТА
РЕШЕНИЕ

Если вы проверяете с помощью диспетчера задач Windows, хотя .net память не освободила, вы обнаружите, что она была освобождена вашим приложением и может быть использована повторно.

Ссылка / ссылка

Чтобы убедиться, что ваше приложение освобождает память при закрытии приложения, используйте Application.ShutdownMode соответствующим образом.

Ссылка / ссылка

1
12.10.2009 23:06:55
Вы правы. Мне просто нужно было вызвать SetProcessWorkingSetSize (), чтобы сообщить операционной системе обновить использование памяти. Большое спасибо.
Travyguy9 12.10.2009 23:55:02

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

Если диспетчер задач говорит, что приложение все еще открыто, когда оно должно быть закрыто, то одна из форм не была должным образом выпущена ...

ИЗМЕНИТЬ, чтобы добавить: Когда вы вызываете форму для открытия, используйте .Close (), хотя самоочевидный, я никогда не использовал .Close (), и это вызвало у меня эту проблему, но было исправлено, когда я добавил команду.

0
12.10.2009 23:39:52
Да, я просто делаю новое окно и затем двигаюсь дальше. Я не держу объект window, поэтому я не могу вызвать .close ().
Travyguy9 12.10.2009 23:56:56
Как ты собираешься сделать новое окно? Просто сообщения или вы делаете Window1 win = new Window1 () ;?
Michael 13.10.2009 00:41:01