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