Impossible d'attendre "void" [duplicate]

Nov 01 2020

ceci est mon script.

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

Il y a une erreur sur la ligne 'wait Thread.Sleep (3000);' Il dit 'Ne peut pas attendre' void '' S'il vous plaît, quelqu'un peut-il refaire le script pour moi pour qu'il fonctionne?

Réponses

1 sobby01 Nov 01 2020 at 06:49

Thread.sleep (3000) n'est pas en attente. Votre méthode est asynchrone, donc l'implémentation idéale attendra Task.Delay (3000)

Thread.Sleep va bloquer votre thread actuel et Task.Delay va retarder logiquement sans bloquer votre thread actuel.

Thread.sleep ne doit pas être utilisé en mode asynchrone à la place, nous devons utiliser Task.Delay (3000) et vice versa.

2 CoolBots Nov 01 2020 at 06:19

Thread.Sleep()n'est pas attendue . Utilisez Task.Delay()plutôt.