Показать устаревшие / устаревшие классы в XAML - PullRequest
4 голосов
/ 06 июля 2011

Контекст

У нас была довольно большая утечка памяти в приложении WPF, которое мы разрабатываем, что было вызвано использованием DropShadowBitmapEffect в библиотеке ресурсов.

Падающая тень использовалась некоторыми UserControl и всеми нашими меню, чтобы отбрасывать тень на фактическое содержимое окна, как таковое:

<DropShadowBitmapEffect x:Key="PopupDropShadow" ShadowDepth="1.5" Softness="0.15" />
...
<Rectangle BitmapEffect="{StaticResource PopupDropShadow}" ... />

Мне пришлось профилировать приложение в течение многих часов, прежде чем я действительно нашел причину проблемы. Класс DropShadowBitmapEffect неуправляем и не позволяет объектам быть GC'd. Также вы заметите, что DropShadowBitmapEffect класс помечен как устаревший , и что существует обновленный класс с именем DropShadowEffect, который фиксирует память утечка (и также аппаратно ускоряется , что значительно повышает производительность рендеринга). Вот фактическое исправление:

<DropShadowEffect x:Key="PopupDropShadow" ShadowDepth="1.5" />
...    
<Rectangle Effect="{StaticResource PopupDropShadow}" ... />

Вопрос

Можно ли использовать устаревший / устаревший класс, использующий предупреждения выбросить при компиляции при использовании в XAML в Visual Studio 2010?

1 Ответ

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