【问题标题】:C# FileInfo and concurrent modification?C# FileInfo 和并发修改?
【发布时间】:2020-04-14 14:42:00
【问题描述】:

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

如果我创建一个 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?

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

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

【问题讨论】:

    标签: c# concurrency fileinfo


    【解决方案1】:

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

    这可以通过检查implementation of fileInfo来看到

    【讨论】:

    猜你喜欢
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2016-11-19
    相关资源
    最近更新 更多