检查文件是否在C#中及时修改

时间:2017-04-06 03:38:35

标签: c# timer last-modified

我有一个每5分钟读取一个文件的应用程序。当程序启动时,它会读取文件,一旦完成,它就会启动一个计时器。一旦5分钟过去,计时器就会停止并再次读取文件。

我想检查文件是否在该时间段内被修改过,如果不是,则不会读取该文件。

目前,我有以下代码:

DateTime dtFile = File.GetLastWriteTime(file);
DateTime now = DateTime.Now;

long sub = (long)(now - dtFile).TotalMilliseconds;

if(sub <= timer1.Interval)
{
    // the code goes here
}

我的问题是我的进程有多个要读取的文件,然后这个过程可能需要几分钟。

因此,如果第一个文件在上午10:00完成执行并且所有文件的处理在上午10:05结束,则计时器将在上午10:05开始。 所以计时器将在上午10:10停止。

如果第一个读取文件在上午10:02被修改,则不会被读取,因为计时器在上午10:05完全处理结束时开始运行。因此,上午10:02的修改后的文件将超出期限。

1 个答案:

答案 0 :(得分:0)

它只是一种方法,但我建议这样做。 创建一个包含以下属性的新类: - 公共字符串,用于文件的路径 - 日期时间,用于存储上次检查时间 - 计时器对象

现在创建一个构造函数,定义路径,开始时间以及定义和启用计时器。

在应用程序启动时或者您现在可以为每个文件实例化一个对象。现在每个物体都有一个独立的计时器,因此不会再干扰彼此。