【发布时间】:2017-04-06 03:38:34
【问题描述】:
我有一个应用程序每 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 修改的文件将过期。
【问题讨论】:
-
每 5 分钟轮询一次文件的替代方法是使用 FileSystemWatcher 类对更改进行react。
-
请不要假设您的受众完全是男性,这有时会对您的某些读者产生排斥效应。谢谢。
标签: c# timer last-modified