我想知道以下代码片段是否是正确的方法:
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# 拥有进程的所有控制权。缺点是线程休眠一小时并且有一个计划任务运行小时。我不介意使用的资源是否可以忽略不计,但我认为一些更有经验的程序员可能有更优雅的解决方案。