作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道下面的代码片段是否是正确的方法:
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/
我是一名优秀的程序员,十分优秀!