c# timer如何设定一个2分钟的倒计时,并且到时间只执行一次 ?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# timer如何设定一个2分钟的倒计时,并且到时间只执行一次 ?相关的知识,希望对你有一定的参考价值。

可以在窗体添加一个timer控件,或者自定义timer也可以
例如
Timer procTimer = new Timer();
设置timer计数间隔
procTimer.Interval = 120000;//120秒
启动timer
procTimer .Tick += new EventHandler(procTimer _Tick);
procTimer .Start();然后注册timer事件
定义timer函数
void procTimer _Tick(object sender, EventArgs e)

procTimer。STOP() 只一次
。。。。。。
参考技术A 可以在窗体添加一个timer控件,或者自定义timer也可以
例如
Timer procTimer = new Timer();
设置timer计数间隔
procTimer.Interval = 120000;//120秒
启动timer

procTimer .Tick += new EventHandler(procTimer _Tick);
procTimer .Start();然后注册timer事件
定义timer函数
void procTimer _Tick(object sender, EventArgs e)

procTimer。STOP() 只一次
。。。。。。
本回答被提问者和网友采纳

如何在设定的时间段内使用计时器

【中文标题】如何在设定的时间段内使用计时器【英文标题】:How To Use Timer For A Set Period Of Time 【发布时间】:2015-03-30 13:46:40 【问题描述】:

我已经使用信号和插槽多次使用计时器,我启动它并继续运行并每隔几秒调用一次事件。

QTimer * timer = new QTimer();
connect(timer,SIGNAL(timeout()),this,SLOT(move()));
timer->start(50);

我想知道如何在一段时间内使用计时器,例如

如果我的程序发生了什么事 ->

//Start CountdownTimer(3 seconds)
setImage("3secondImage.jpg");
//when time allocated is up
resetOrginalImage("orig.jpg");

我不知道该怎么做

【问题讨论】:

【参考方案1】:

QTimer 有singleShot()。但是您需要创建一个不带参数的单独插槽:

private slots:
    void resetImage() resetOrginalImage("orig.jpg");

...
setImage("3secondImage.jpg");
QTimer::singleShot(3000, this, SLOT(resetImage()));

【讨论】:

我只希望它被调用一次? @svlasov 它会被调用一次。 单次计时器只触发一次,非单次计时器每间隔毫秒触发一次。【参考方案2】:

如果您使用的是 C++ 11,则将 lambda 表达式与 QTimer 一起使用会更容易阅读,尤其是在计时器只执行少量代码的情况下:-

QTimer * timer = new QTimer();
timer->setSingleShot(true); // only once

connect(timer, &QTimer::timeout, [=]
    // do work here
    resetOrginalImage("orig.jpg");
;

timer->start(3 * 1000); // start in 3 seconds

在我看来,这比在计时器超时时必须声明要调用的单独函数要优雅一些。

【讨论】:

以上是关于c# timer如何设定一个2分钟的倒计时,并且到时间只执行一次 ?的主要内容,如果未能解决你的问题,请参考以下文章

c#计时器如何保存计时

C#如何实现鼠标左键自动点击并自己设定点击间隔

c# timer 始终启用性能

如何在 C# 的控制台应用程序中使用带有 Web 浏览器的计时器?

如何在设定的时间段内使用计时器

如何在 C# 中创建计时器而不使用 System.Timers.Timer 或 System.Threading.Timer