替换thread.sleep

时间:2014-05-15 18:34:30

标签: c# winforms

我正在尝试制作Tamagochi,但我遇到了一个问题。我有一个最大值为300的Progressbar。每隔5-8秒,Progressbar就会清空一次。一旦它低于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);

应该是一个冷却时间,一旦完成,如果满足要求,则允许用户再次入睡。

1 个答案:

答案 0 :(得分:3)

尝试使用计时器:

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