Không thể chờ đợi 'void' [trùng lặp]

Nov 01 2020

đây là kịch bản của tôi.

        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ó lỗi trên dòng 'đang chờ Thread.Sleep (3000);' Nó thông báo 'Không thể chờ đợi' void '' Vui lòng có ai đó làm lại kịch bản cho tôi để nó hoạt động được không?

Trả lời

1 sobby01 Nov 01 2020 at 06:49

Thread.sleep (3000) là không thể chờ đợi. Phương thức của bạn là không đồng bộ nên việc triển khai lý tưởng sẽ được chờ đợi Task.Delay (3000)

Thread.Sleep sẽ chặn luồng hiện tại của bạn và Task.Delay sẽ trì hoãn một cách hợp lý mà không chặn luồng hiện tại của bạn.

Thread.sleep không nên được sử dụng trong hoạt động không đồng bộ thay vào đó chúng ta nên sử dụng Task.Delay (3000) và ngược lại.

2 CoolBots Nov 01 2020 at 06:19

Thread.Sleep()là không thể chờ đợi . Sử dụng Task.Delay()thay thế.