Недавно я играл с файлами шрифтов в 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» находится в папке "Шрифты". Если я создаю новую папку с именем "Fred" на том же уровне, что и "Fonts", я могу вырезать и вставить файл TTF в новую папку. Теперь новую папку "Fred" можно удалить, включая содержащийся в ней файл TTF (или, если это не удастся, цикл питания позволяет удалить всю папку)!
Похоже, мое мобильное устройство ставит какую-то "блокировку" (это правильная терминология?) в папке Fonts во время загрузки.