使用C#Timer停止执行程序

时间:2009-11-12 14:35:29

标签: c# timer

我希望程序停止执行一段时间。我想要定期发生这种情况。例如,我想要一个程序运行5分钟,然后它应该停止2分钟,然后继续运行另外5分钟。这可能与C#Timer类有关吗?

5 个答案:

答案 0 :(得分:3)

您正在寻找Thread.Sleep()传递暂停执行的毫秒数。

答案 1 :(得分:1)

我不确定这是不可取的行为,所以如果你更新你的问题,你可能会得到比这更好的答案。

你可以使用一个只能切换变量的计时器(例如bool)。如果应用程序使用该bool,则可以使用它来控制应用程序是否“正在运行”。

我建议使用此代替Thread.Sleep(),因为至少您的应用程序仍然具有响应性。如果你想暂停一个非UI线程,那么Thread.Sleep()就足够了,但在UI线程上调用Thread.Sleep(),即使持续时间非常短。

答案 2 :(得分:0)

正如之前的回答所说:什么是'停止'?用户无法使用该程序2分钟?如果是这样,你可以弹出模态对话框(带文本),用户无法关闭它。

答案 3 :(得分:0)

如果这是Windows窗体应用程序,您可能需要考虑将其移动到线程执行模型中。您可以使用BackgroundWorker控件,使用ThreadPool类的线程池,异步方法 Begin End (例如{{1}或者通过自己手动处理线程(更复杂一点)。

Stream.BeginWrite将允许您处理异步代码的事件,并更新进度条或标签以显示执行的当前状态,从而提供最简单的开发形式。这将允许您在没有系统警告用户应用程序挂起的情况下使用BackgroundWorker

基本上,在Windows窗体开发中,您应该使用某种形式的线程来处理长时间执行。

答案 4 :(得分:0)

您可以使用Window.Forms.Timer每1000ms注册一次回调

        private int counter;
        void StartTimer()
        {
            counter = 0;
            Timer timer = new Timer();
            timer.Interval = 1000;
            timer.Enabled = true;
            timer.Tick += Timer_Tick;
        }

在事件函数中,只需递增一个全局计数器变量,该变量将在以下情况下执行 条件满足


        private void Timer_Tick(object sender, EventArgs e)
        {
            counter++;
        }