Pergunta

cada vez que eu criar um objeto FileInfo e acessá-lo de propriedade lastaccesstime, é sempre a poucos minutos off. a janela de propriedades do arquivo permanece constante, no entanto, os shows de aplicação que é geralmente alguns minutos após a hora janela de propriedades.

Além disso, eu notei que se eu arrastar o arquivo para a janela cmd para passar o nome do arquivo como um argumento, as atualizações de tempo de acesso na maioria das vezes, mas nem sempre.

O que poderia estar causando isso?

abaixo é um exemplo:

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 texto http://img407.imageshack.us/img407/4728/propertiesox6 .png texto alt http://img380.imageshack.us/img380/7752/appgt0.png

Foi útil?

Solução

Na minha experiência, hora do último acesso é notoriamente não confiável. De acordo com a http://technet.microsoft.com/en-us/library/ cc781134.aspx ...

O Access Time no disco não é sempre atual, porque NTFS procura por um intervalo de uma hora antes de forçar as atualizações Access Time para o disco. NTFS também atrasa a escrever o último tempo de acesso ao disco quando os usuários ou programas executar somente as operações de leitura em um arquivo ou pasta, como listar o conteúdo da pasta ou ler (mas não alterar) um arquivo na pasta.

Aparentemente, a cópia na memória será correta, mas na minha experiência, você pode obter um valor em cache que podem estar desatualizados. Além disso, nota que a última vez que o acesso pode ser desligado pelo usuário, e é desligado por padrão no Vista e 2008.

Outras dicas

O artigo do MSDN com informações básicas sobre os tempos de arquivo tem a dizer sobre a resolução de tempo de arquivo e os tempos do último acesso:

Por exemplo, em FAT, criar tempo tem uma resolução de 10 milissegundos, o tempo de gravação tem uma resolução de 2 segundos, e tempo de acesso tem uma resolução de 1 dia (realmente, a data de acesso). NTFS atrasa atualizações para o último tempo de acesso para um arquivo por até uma hora após o último acesso.

Isto implicaria que tanto FAT e NTFS, a última gravação Tempo geralmente não vai ser muito preciso, embora eu não tenho certeza que os valores exatos que citam estão corretas.

Hmm, possivelmente isso a partir da MSDN :

Quando a primeira chamada, FileSystemInfo chama de atualização e retorna o cache informações sobre APIs para obter atributos e assim por diante. Em chamadas subseqüentes, você deve chamar Refresh para obter o mais recente cópia das informações.

Mas você está vendo o LAT estar sempre alguns minutos no? [Futuro | passado]

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top