Мы создаем большое количество шрифтов для краткосрочного использования. Шрифты встроены в документы. Я хочу удалить файлы шрифтов, если они больше не используются. Как мы можем это сделать? Следующий упрощенный код не работает:
PrivateFontCollection pfc = new PrivateFontCollection();
pfc.AddFontFile(fontFile);
FontFamily family = pfc.Families[0];
Console.WriteLine(family.GetName(0));
family.Dispose();
pfc.Dispose();
GC.Collect();
GC.WaitForPendingFinalizers();
File.Delete(fontFile);
Удаление файла не удается, поскольку файл заблокирован. Что я могу сделать еще, чтобы снять блокировку файла?
PS: Прежде чем использовать AddMemoryFont. Это работает с Windows 7. Но с Windows 8 .NET использует неправильные файлы шрифтов после удаления первого FontFamily. Поскольку каждый документ может содержать другие шрифты, нам нужно очень большое количество шрифтов, и мы не можем хранить ссылки на все.