我想知道以下代码片段是否是正确的方法:
Logger.Debug("Check file exists for corresponding path: {0}.", filePath);
var timeDeadline = DateTime.Today + Settings.Default.FileDeadline; //Timespan type
while (!File.Exists(filePath))
{
if (DateTime.Now > timeDeadline)
Logger.Error("The file is not available: {0}.", filePath);
Logger.Info("The file is not yet available. Waiting for 1 hour...");
Thread.Sleep(TimeSpan.FromHours(1));
}
此代码的目的是使用 Windows 任务计划程序安排在清晨加载一个文件,该文件通常在 9:00 左右加载,但可能会延迟数小时,最终需要在 14:30 之前加载(FileDeadline )当我将丢失的文件报告为错误(如果仍然丢失)时。
我也可以每小时抛出一个异常,并允许 Windows 任务每小时重新启动该进程,但我认为最好让 C# 拥有该进程的所有控制权。缺点是线程休眠一小时并有计划任务运行数小时。我不介意所使用的资源是否可以忽略不计,但我认为一些更有经验的程序员可能有更优雅的解决方案。
最佳答案
Thread.Sleep 是一个坏主意,使用计时器(System.Timers)来完成这项工作。 请参阅http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx有关Timer类的信息
关于c# - 正确等待每小时轮询加载文件直到某个时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18142637/