1

我有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");
}

(以上取自这里

4

2 回答 2

1

使用计时器而不是循环。步骤 1 和 2 将在以您指定的时间间隔触发的事件内完成。

如果您需要一个半常规计时器,您可以将 Timer 对象设置为不自动重置并在事件结束时手动启用它。

于 2012-11-20T17:54:25.187 回答
1

这在毫秒内起作用,您可以在它被中断的情况下捕获它,但这通常不会发生。

System.Threading.Thread.Sleep(150000);

编辑:

如果您只是想等到其他人完成,或者如果您想每 150 秒执行一次,则另一种选择是使用 join,您自己的答案会起作用。在问之前确保你知道你想要什么。

如果您想要线程安全的暂停,请使用:

task.Wait(150000);
于 2012-11-20T17:52:19.443 回答