BillWoodruff
Я хотел бы предложить другой подход, основанный на предположении, что вы не создаете сотни различных экземпляров шрифтов.
а. в приложении широко, или форма широкая, сфера создавать экземпляры шрифтов, которые вы собираетесь использовать.
б. используйте их
c. когда приложение закроется, шрифты будут собраны в мусор.
d. Если вы действительно параноик по поводу удаления шрифтов:
using (Font arial12 = new Font("Arial",12))
{
// use the Font
}
Я еще никогда не видел приложения WinForms, которое требовало бы явного удаления шрифтов.
См. это обсуждение на StackOverFlow для получения более подробной информации о том, что такое шрифт на самом деле, и о проблемах, связанных с " утилизацией шрифтов: [
^]. Вы также можете быть заинтересованы в обсуждении здесь [
^].
Обратите внимание, что у вас может не быть возможности управлять тем, как некоторые из ваших элементов управления WinForm внутренне управляют шрифтами (например, RichTextBox, TreeView).
Priya-Kiko
Спасибо за ответ.
В моем случае у меня есть основной класс (форма), где я написал общую процедуру DrawItem, подобную этой, которая будет использоваться всеми списками ownerdrawn в других модулях моего проекта :
общественная статический недействительным lvDrawItem(объект отправителя, DrawListViewItemEventArgs е строки [ул.], типа int32[] х)
{
Font myfont = новый шрифт ("Segoe UI", 12);
for (int mi = 0; mi < str.Длина; mi++)
е.Графика.Шнурок ([Ми], сайт myfont, PopUpTextColor, ул. Новая точка(электронная.По часам.Х + х[Ми], Эл.По часам.Г));
if ((e. State & ListViewItemStates.Focused) = = ListViewItemStates.Сосредоточенный)
{
е.Графика.FillRectangle(PopUpSelectedItemBackColor, e. Bounds);
for (int mi = 0; mi < str.Длина; mi++)
е.Графика.Шнурок ([Ми], сайт myfont, PopUpSelectedItemForeColor, ул. Новая точка(электронная.По часам.Х + х[Ми], Эл.По часам.Г));
}
}
Так что в данном случае у меня есть сомнения в том, как будет утилизирован мой Фонт.
Я на самом деле застрял с выяснением решения для "ошибки создания дескриптора окна". В процессе работы я думаю, что шрифты, которые я использую в цикле для listview по всему проекту, могут съедать память.
Пожалуйста, уточните.