我正在尝试制作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);
应该是一个冷却时间,一旦完成,如果满足要求,则允许用户再次入睡。
答案 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();
}