ไม่สามารถรอ "โมฆะ" [ซ้ำ]

Nov 01 2020

นี่คือสคริปต์ของฉัน

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

มีข้อผิดพลาดในบรรทัด 'await Thread.Sleep (3000);' มันขึ้นว่า 'ไม่สามารถรอ' เป็นโมฆะ '' ได้โปรดให้ใครทำสคริปต์ให้ฉันอีกครั้งเพื่อให้มันใช้งานได้

คำตอบ

1 sobby01 Nov 01 2020 at 06:49

Thread.sleep (3000) ไม่สามารถรอได้ วิธีการของคุณเป็นแบบ async ดังนั้นการนำไปใช้ในอุดมคติจะรอ Task.Delay (3000)

Thread.Sleepจะบล็อกเธรดปัจจุบันของคุณและTask.Delayจะล่าช้าอย่างมีเหตุผลโดยไม่บล็อกเธรดปัจจุบันของคุณ

ไม่ควรใช้ Thread.sleep ในการทำงานแบบอะซิงโครนัสแทนเราควรใช้ Task.Delay (3000) และในทางกลับกัน

2 CoolBots Nov 01 2020 at 06:19

Thread.Sleep()ไม่สามารถรอได้ ใช้Task.Delay()แทน