在C#Windows窗体中是否有QTimer :: singleShot等价物?

时间:2011-10-18 19:46:05

标签: c# winforms qt timer threadpool

Windows窗体中的Qt库是否存在以下静态函数的模拟?

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();         

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

System.Threading.Timer怎么样?将one of the constructorsperiod参数一起使用,并相应地指定参数。