C# FileInfo 和并发修改?

C# FileInfo and concurrent modification?

这很可能是一个简单的问题,但我找不到正确的答案:

如果我创建一个 FileInfo 对象并在长 运行 代码期间访问它的属性 - 它是否被缓存(即我创建 FileInfo 对象时的 snapshot)或访问时是否评估某些属性? (甚至混合?)

即:

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?

(同样的问题。适用于文件大小和其他属性)

ps.: 我知道我可以只测试写入时间,但由于有很多属性,我不想全部测试。

FileInfo 缓存文件属性信息,如长度、存在等。第一次访问这些属性时加载此状态。有一个 Refresh() 方法可以重新加载 FileInfo 的所有文件属性。

这可以通过检查 implementation of fileInfo

看出