Non posso attendere "void" [duplicato]

Nov 01 2020

questo è il mio copione.

        private async void secondmult_Click(object sender, EventArgs e)
        {
            var sct = sc;
            var secondmultx = secondmult;

            if (player.pcc == 100)
            {
                player.multiplier = 2;
                player.pcc = player.pcc - 100;
                secondmult.Enabled = false;
                sct.Text = player.pcc.ToString();
            }
            else if(player.pcc < 100)
            {
                sc.Text = "X";
                await Thread.Sleep(3000);
                sc.Text = player.pcc.ToString();
            }
            else if(player.pcc > 100)
            {
                player.multiplier = 2;
                player.pcc = player.pcc - 100;
                secondmultx.Enabled = false;
                sct.Text = player.pcc.ToString();
            }

C'è un errore sulla riga "await Thread.Sleep (3000);" Dice "Non posso attendere" void "" Per favore, qualcuno potrebbe rifare la sceneggiatura per me in modo che funzioni?

Risposte

1 sobby01 Nov 01 2020 at 06:49

Thread.sleep (3000) non è in attesa. Il tuo metodo è asincrono, quindi l'implementazione ideale sarà attesa Task.Delay (3000)

Thread.Sleep bloccherà il thread corrente e Task.Delay ritarderà logicamente senza bloccare il thread corrente.

Thread.sleep non dovrebbe essere usato nel funzionamento asincrono, invece dovremmo usare Task.Delay (3000) e viceversa.

2 CoolBots Nov 01 2020 at 06:19

Thread.Sleep()non è in attesa . Usa Task.Delay()invece.