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
看出
这很可能是一个简单的问题,但我找不到正确的答案:
如果我创建一个 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
看出