Недавно я игрался с файлами шрифтов на Windows CE 6.0 (разработка с использованием C# Compact-Framework v2.0 и AddFontResource). После добавления "Angsana New" (для тайского языка) я обнаружил, что загруженный мной файл Angsana.ttf не может быть удален! Я перепробовал все, что только мог придумать, включая:
* Re-running my program and using RemoveFontResource
* Changing to another language that uses an in-built font or another I supply
* Renamed the file (which is allowed, why?
* Manually checking the registry to see if "Angsana" is referenced anywhere
* Power down the mobile device and back up again
* Loaded the Windows CE command prompt and used the command:
del /f Angsana.ttf
Любопытно, что я могу свободно переименовать файл шрифта из "Angsana.ttf" в "Angsana_2.ttf"... но все равно не удалить его. Еще интереснее то, что если я скопирую Angsana.ttf (чтобы создать "копию Angsana.ttf"), то копию также нельзя будет удалить! Это сильный намек на то, что есть какой-то атрибут или системный процесс, блокирующий файл (и его копии)... но что?
Сообщение об ошибке от Explorer:
"Cannot delete 'Angsana.ttf': There has been a sharing violation. The source or destination may be in use."
В командной строке ошибка выглядит просто:
"Cannot remove Angsana.ttf"
Что же такое происходит??
ОБНОВЛЕНИЕ: Файл "Angsana.ttf" находится в папке "Fonts". Если я создам новую папку "Fred" на том же уровне, что и "Fonts", я смогу вырезать и вставить файл TTF в новую папку. Теперь новую папку "Fred" можно удалить, включая содержащийся в ней файл TTF (или, если это не поможет, цикл включения/выключения питания позволит удалить всю папку)!
Похоже, что мое мобильное устройство устанавливает своего рода «блокировку» (верный термин?) на папку «Шрифты» во время загрузки.