C# FileInfo и одновременная модификация? - PullRequest
0 голосов
/ 14 апреля 2020

Скорее всего, это простой вопрос, но я не смог найти правильный ответ:

Если я создаю FileInfo-Object и получаю доступ к его свойствам во время продолжительного кода - кешируется ли он (то есть снимок того времени, когда я создал FileInfo-Object) или некоторые свойства оцениваются при доступе? (Или даже смешанный?)

т.е.:

FileInfo fi = new FileInfo("C:\myfile.txt"); //Time A

//Do something. Another Process will now edit the file, and save it,
//while this code is running. Let's call this Time B 

Log(fi.LastWriteTime.ToString());

Буду ли я регистрировать время A или время B?

(тот же вопрос c. Применяется к размеру файла и другим атрибутам)

пс .: Я знаю, что мог бы просто проверить это на время записи, но так как есть много атрибутов Я не хочу проверять их все.

1 Ответ

4 голосов
/ 14 апреля 2020

FileInfo кэширует информацию об атрибутах файла, такую ​​как длина, существует и т. Д. c. Это состояние загружается при первом доступе к любому из этих свойств. Существует метод Refresh(), который перезагружает все атрибуты файла для FileInfo.

Это можно увидеть, изучив реализацию fileInfo

...