我有do/while
,如下所示:
do {
//1.look for a report
//2.either use interops to run an xl macro report or run a batch file report or run vbs file report
//3.then sleep/pause program for 150seconds
} while (look for next report to run)
这都是Console
申请。
如何创建150秒暂停/睡眠?第2步可能涉及运行各种进程,我有点担心简单地使用Thread.Sleep
可能会很麻烦,因为它不是线程安全的。
我应该以某种方式将这种代码用于结构中,即将步骤1和2放在CallMeBack
方法中吗?
static void Main(string[] args) {
var t = new System.Timers.Timer(1000);
t.Elapsed += (s, e) => CallMeBack();
t.Start();
Console.ReadLine();
}
public static void CallMeBack() {
//1.look for a report
//2.either use interops to run an xl macro report or run a batch file report or run vbs file report
Console.WriteLine("Doing some consuming time work using sleep");
}
(以上摘自HERE)
答案 0 :(得分:1)
这在毫秒内工作,你可以在它被中断时捕获它,但通常不会发生。
System.Threading.Thread.Sleep(150000);
编辑:
另一种选择是使用连接,如果你只是想等到其他人完成,或者如果你想每150秒执行一次,你自己的答案就可以了。在询问之前确保你知道自己想要什么。
如果您想要线程安全暂停使用:
task.Wait(150000);
答案 1 :(得分:1)
使用Timer代替循环。步骤1和2将在使用您指定的间隔触发的事件内完成。
如果您需要半常规计时器,可以将Timer对象设置为不自动重置,并在事件结束时手动启用它。