На самом деле, если вы хотите больше контроля, вам нужно использовать FileStream . Это дает вам больше контроля при записи в файлы. Это позволяет держать дескриптор файла открытым и просто записывать данные без какого-либо дополнительного контроля.
Но FileStream также имеет некоторые недостатки.
Из документации
Когда объект FileStream не имеет исключительного удержания на своем дескрипторе, другой поток может одновременно получить доступ к дескриптору файла и изменить позицию указатель файла операционной системы, связанный с дескриптором файла. В этом случае кэшированная позиция в объекте FileStream и кэшированные данные в буфере могут быть скомпрометированы. Объект FileStream регулярно выполняет проверки методов, которые обращаются к кэшированному буферу, чтобы убедиться, что позиция дескриптора операционной системы совпадает с позицией в кэше, используемой объектом FileStream.
С другой стороны:
System.IO.File содержит обертки вокруг файловых операций для базовых c действий, таких как сохранение файла, чтение файла в строки и т. Д. c. Это просто абстракция над FileStream.
Так что WriteAllText - это абстракция для создания, сохранения и закрытия и автоматического выполнения этого, и вам не нужно знать каждую из реализаций.
Итак базовый c ответ на ваш вопрос: NO , вам не нужно вручную закрывать файл, он сделает это автоматически.