respuesta de Tommy Carlier me hizo pensar ....
Una buena forma de visualizar las diferencias es ejecutando por separado los dos fragmentos (acabo de utilizar LinqPAD) similar a los de abajo mientras también ejecuto el monitor de proceso sysinternals.
while(true)
File.GetLastAccessTime([file path here]);
y
FileInfo bob = new FileInfo(path);
while(true){
string accessed = bob.LastAccessTime.ToString();
}
Si nos fijamos en el monitor de procesos mientras se ejecuta el primer fragmento de código que verá repetidos y constantes intentos de acceso al archivo para el proceso LINQPad. El segundo fragmento hará un acceso inicial al archivo, para lo cual verá actividad en el monitor del proceso, y luego muy poco después.
Sin embargo, si va y modifica el archivo (acabo de abrir el archivo de texto que estaba monitoreando usando FileInfo y agregué un carácter y guardé) verá una serie de intentos de acceso al proceso en el monitor de proceso de LinqPAD.
Esto ilustra el comportamiento no en caché y en caché de las dos aproximaciones diferentes, respectivamente.
¿El enfoque sin memoria caché tendrá un agujero en el disco duro?
EDITAR
me fui sintiendo todo inteligente sobre mis pruebas y luego se usa el comportamiento de almacenamiento en caché de FileInfo en mi servicio de Windows (básicamente para sentarse en un bucle y decir 'Has-archivo-cambiado-ha- archivo-cambiado ... 'antes de hacer el procesamiento)
Si bien este enfoque funcionó en mi cuadro dev, no funcionó en el entorno de producción, es decir, el proceso siguió ejecutándose sin importar si el archivo había cambiado o no. Terminé cambiando mi enfoque para verificar y solo utilicé GetLastAccessTime como parte de él. No sé por qué se comportaría de manera diferente en el servidor de producción ... pero no estoy demasiado preocupado en este momento.
También he encontrado que estas funciones proporcionan información no confiable; como cuando el archivo reside en un recurso compartido de red (samba). Noté que los documentos de MSDN (http://msdn.microsoft.com/en-us/library/system.io.file.getlastaccesstime(v=VS.90).aspx) ahora dicen "Este método puede devolver un valor inexacto ... . " –