【问题标题】:Check if File has been modified in time in C#在 C# 中检查文件是否已及时修改
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢您的帮助。我想创建一个类,其中包含来自文件路径的字符串和带有最后修改日期的 Datetime。然后当再次运行通用计时器时,我会检查文件的最后修改是否与课堂上的日期不同。它会起作用吗?该问题会为超过 100 个文件实例化该类,因为它最终会权衡应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多