Насколько вы можете, вы должны поместить любые кисти, которые будут значительно использоваться в одном или нескольких словарях ресурсов.
Пока вы не делаете часть кисти зависимой от чего-то переменного, этибудет автоматически заморожен. Объедините их в app.xaml, чтобы их можно было использовать во всем приложении.
Для большинства разработчиков WPF это наиболее распространенный способ замораживания, с которым они сталкиваются, и выполняется автоматически.
Есливы используете freezable, который не заморожен, тогда на измененное событие будет подписано, чтобы вызвать потенциальные изменения в представлении. Если вы заморозите его, тогда это событие не будет подписано, и поэтому оно более эффективно. Однако вам придется использовать множество незамерзших замораживаемых объектов, прежде чем вы, вероятно, заметите такую проблему.
Если вы выполняете много графической обработки, например, пишете игру, то проходите замораживаемые объекты, такие как динамически создаваемые геометрии, изФоновые потоки в пользовательском интерфейсе, вероятно, будут представлять интерес и значимость. Однако вы можете написать множество бизнес-приложений, и вам никогда не придется делать подобные вещи.
Существует довольно ограниченный набор вещей, которые вы можете заморозить - они должны наследоваться от freezable. Пользовательские контролы этого не делают.
Если вы прочитаете список, вы, вероятно, потратите больше времени на размышления «что это такое», чем «ах, да, я вижу, как я замораживаю .... ThumbButtonInfo».
https://docs.microsoft.com/en-us/dotnet/api/system.windows.freezable?view=netframework-4.8