replacement for thread.sleep

本文关键字:sleep thread for replacement | 更新日期: 2023-09-27 18:03:48

我想做一个电子宠物,但是我遇到了一个问题。我有一个进度条的最大值为300。每隔5-8秒,进度条就会清空一点。一旦温度降到250以下,你就可以睡觉了。下面是我到目前为止的代码:

private void BtnSleep_Click(object sender, EventArgs e)
    {
        if (PgbSleep.Value <= 250)
        {
            int temp = PgbSleep.Maximum - PgbSleep.Value;
            if (temp + PgbSleep.Value >= 300)
            {
                Timer2.Stop();
                Thread.Sleep(20000);
                PgbSleep.Value = 300;
                Timer2.Start();
            }
        }
        else
        {
            MessageBox.Show("Your pokemon is not tired enough to sleep! try playing with it");
        }
    }

我正在寻找

的替代品。
Thread.Sleep(20000);

但不知道该用什么。任何帮助将非常感激!

Thread.Sleep(20000);

应该是一个冷却时间,一旦完成,如果满足要求,用户可以再次休眠。

replacement for thread.sleep

尝试使用计时器:

Timer sleepTimer = new Timer(20000); //Creates a timer for sleeping
public MyClass()
{
   sleepTimer.Elapsed += new EventHandler((s, e) => WakeUp());
}
private void BtnSleep_Click(object sender, EventArgs e)
{
    if (PgbSleep.Value <= 250)
    {
        int temp = PgbSleep.Maximum - PgbSleep.Value;
        if (temp + PgbSleep.Value >= 300)
        {
            Timer2.Stop();
            sleepTimer.Start();
        }
    }
    else
    {
        MessageBox.Show("Your pokemon is not tired enough to sleep! try playing with it");
    }
}
private void WakeUp()
{
    PgbSleep.Value = 300;
    Timer2.Start();
}