LastAccess时间不正确

每次我创建一个FileInfo对象并访问它的lastaccesstime属性时,它总是休息几分钟。文件属性窗口保持不变,但应用程序显示它通常在属性窗口时间后几分钟。 另外,我注意到如果我将文件拖到cmd窗口以传递文件名作为参数,访问时间大部分时间都会更新,但并非总是如此。 可能是什么导致了这个? 下面是一个例子:
static void Main(string[] args)
{
    if (args.Length > 0)
    {
        FileInfo fi = new FileInfo(args[0].ToString());
        Console.WriteLine(args[0]);
        if (fi.Exists)
        {
            Console.Write("Current: " + DateTime.Now + "\n");
            Console.Write("LAT: " + fi.LastAccessTime + "\n");
            Console.Write("LWT: " + fi.LastWriteTime + "\n");
            Console.Write("CT: " + fi.CreationTime + "\n");
        }
        Console.ReadKey();
    }
}
alt text http://img407.imageshack.us/img407/4728/propertiesox6.png alt text http://img380.imageshack.us/img380/7752/appgt0.png     
已邀请:
根据我的经验,上次访问时间是出了名的不可靠。根据http://technet.microsoft.com/en-us/library/cc781134.aspx ...   磁盘上的上次访问时间并不总是最新的,因为在强制将上次访问时间更新到磁盘之前,NTFS会查找一个小时的间隔。当用户或程序对文件或文件夹执行只读操作时,NTFS还会延迟将上次访问时间写入磁盘,例如列出文件夹的内容或读取(但不更改)文件夹中的文件。 显然,内存中的副本是正确的,但根据我的经验,您可能会获得可能已过期的缓存值。另请注意,用户可能会关闭上次访问时间,默认情况下在Vista和2008中会将其关闭。     
MSDN文章包含有关文件时间的基本信息,可以说文件时间分辨率和上次访问时间:   例如,在FAT上,创建时间的分辨率为10毫秒,写入时间的分辨率为2秒,访问时间的分辨率为1天(实际上是访问日期)。 NTFS在上次访问后最多延迟一小时将更新延迟到文件的上次访问时间。 这意味着在FAT和NTFS上,上次写入时间通常不会非常精确,尽管我不确定它们引用的确切值是否正确。     
嗯,可能来自MSDN:   第一次调用时,FileSystemInfo   调用Refresh并返回缓存   有关获取属性的API的信息   等等。在随后的电话中,你   必须调用Refresh才能获得最新信息   信息的副本。 但你看到LAT在[未来|过去]总是只有几分钟?     

要回复问题请先登录注册