在c# Windows窗体中是否有QTimer::singleShot等效的?

本文关键字:singleShot QTimer Windows 窗体 是否 | 更新日期: 2023-09-27 18:11:32

是否有一个类似于以下静态函数从Qt库在Windows窗体?

http://doc.qt.io/qt-5/qtimer.html singleShot

我能想到的最好的是:

ThreadPool.QueueUserWorkItem((o) =>
{
    Thread.Sleep(someNumberOfMilliseconds);
    DoDelayedWorkHere();
});

使用System.Windows.Forms.Timer可以达到这个目的。

var timer = new System.Windows.Forms.Timer();
timer.Interval = someNumberOfMilliseconds;
timer.Tick += (o, args) =>
    {
        timer.Stop();
        DoDelayedWorkHere();
    };
timer.Start();         

在c# Windows窗体中是否有QTimer::singleShot等效的?

QTimer是一个同步定时器,就像Winforms定时器一样。Threading或其他Timer类之一是而不是的替代品。单镜头很容易实现,只需在Tick事件处理程序中将计时器的Enabled属性设置为false。比赛没有危险:

    private void timer1_Tick(object sender, EventArgs e) {
        ((Timer)sender).Enabled = false;
        // etc..
    }

System.Threading.Timer呢?使用一个带有period参数的构造函数,并相应地指定参数。