Pregunta

I'm trying to make a Tamagochi but I've ran into a problem. I have a Progressbar with a max value of 300. Every 5-8 seconds the Progressbar empties a bit. Once it gets below 250 you're allowed to sleep. Here is the code i have so far:

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

I'm trying to find a replacement for the

Thread.Sleep(20000);

But dont know what to use. Any help would be much appreciated! The

Thread.Sleep(20000);

Is supposed to be a cooldown, once its completed the user is allowed to sleep again if the requirements are met.

¿Fue útil?

Solución

Try using a timer:

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();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top