Семейства PrivateFontCollection ненадежны при большем количестве итераций.C#

Место общения программистов C#
Ответить
Anonymous
 Семейства PrivateFontCollection ненадежны при большем количестве итераций.

Сообщение Anonymous »

Я загрузил MemoryStream в PrivateFontCollection и распечатал количество шрифтов.

Я проделывал этот процесс 10 раз и хочу, чтобы результат был одинаковым для каждой итерации. Мне нужен правильный результат для двух итераций, но иногда первая итерация тоже идет не так. У меня не получается согласованный вывод.

Предложите мне решение, позволяющее обеспечить согласованный вывод с помощью PrivateFontCollection.

Примечание:< /strong> Папка Fonts содержит 5 разных шрифтов.

Код: Выделить всё

private static void Work()
{
string fontPath = @"D:\fonts";
PrivateFontCollection fontCollection = null;
for (int i = 1; i < 11; i++)
{
var fileList = Directory.GetFiles(fontPath, "*.ttf", SearchOption.TopDirectoryOnly);
fontCollection = SafeLoadFontFamily(fileList);
Console.WriteLine(i+" Iteration and families count:"+fontCollection.Families.Length);
fontCollection.Dispose();
}
Console.ReadKey();
}
private static PrivateFontCollection SafeLoadFontFamily(IEnumerable fontList)
{
if (fontList == null) return null;
var fontCollection = new PrivateFontCollection();

foreach (string fontFile in fontList)
{
if (!File.Exists(fontFile)) continue;
byte[] fontBytes = File.ReadAllBytes(fontFile);
var fontData = Marshal.AllocCoTaskMem(fontBytes.Length);
Marshal.Copy(fontBytes, 0, fontData, fontBytes.Length);
fontCollection.AddMemoryFont(fontData, fontBytes.Length);
}
return fontCollection;
}
Ожидаемый результат для 10 раз:

1. Число итераций и семейств: 5.

2. Число итераций и семейств: 5

3 Число итераций и семейств: 5

4 Число итераций и семейств: 5

5 Число итераций и семейств: 5

6 Количество итераций и семейств: 5

7 Количество итераций и семейств: 5

8 Количество итераций и семейств: 5

9 Количество итераций и семейств: 5

10 Количество итераций и семейств: 5


Фактический результат: [несогласованный результат]

1 Количество итераций и семейств: 5

2 Количество итераций и семейств: 5

3 Количество итераций и семейств: 5

4 Количество итераций и семейств: 5

5 Количество итераций и семейств: 4

6 Количество итераций и семейств: 3

7 Количество итераций и семейств :3

8 Количество итераций и семейств: 4

9 Количество итераций и семейств: 4

10 Количество итераций и семейств: 4


Подробнее здесь: https://stackoverflow.com/questions/572 ... iterations
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»