当前位置: 首页 > 知识库问答 >
问题:

无法等待“void”[重复]

郭弘盛
2023-03-14

这是我的剧本。

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

“等待线程”行有错误。睡眠(3000);它说“无法等待”无效“请有人为我重新编写脚本,这样它就可以工作了吗?

共有2个答案

商燕七
2023-03-14

线睡眠(3000)是不可等待的。您的方法是异步的,所以理想的实现将是等待任务。延迟(3000)

线程。睡眠将阻塞您当前的线程和任务。延迟将在逻辑上延迟而不阻塞您当前的线程。

线异步操作中不应使用睡眠,而应使用任务。延迟(3000),反之亦然。

桑坚
2023-03-14

<代码>线程。Sleep()不可等待。使用任务。改为Delay()。

 类似资料:
  • 使用asyn/wait vs wait有什么区别task.run() 等待任务。运行示例- 异步等待示例-

  • 这是ConcurrentLinkedQueue文档的描述: 基于链接节点的无限线程安全队列。此队列对元素 FIFO(先进先出)进行排序。 。 此实现采用高效的“免等待”算法 是否有可能无界和无等待? 我很确定等待自由确保了任何操作的约束。

  • 我有一个方法如下所示: 我试图这样进行单元测试: 在完成模拟的LookUpIdAsync之前,将调用我的断言。在我的普通代码中,这正是我想要的。但是对于我的单元测试,我不希望这样。 我正在使用BackgroundWorker转换为Async/Await。对于后台工作人员,这项功能正常运行,因为我可以等待后台工作人员完成。 但是似乎没有办法等待异步无效方法... 如何对该方法进行单元测试?

  • 如何在此时等待3秒//等待3秒,然后继续 }

  • 问题内容: 在Bash脚本中,我想执行以下操作: 即,在后台启动两个应用程序,并给它们60秒以完成其工作。然后,如果他们没有在该时间间隔内完成,请杀死他们。 不幸的是,上述内容不起作用,因为它是可执行文件,而它是Shell命令。我尝试将其更改为: 但这仍然行不通,因为只能在同一外壳程序内启动的PID上进行调用。 有任何想法吗? 问题答案: 将PID写入文件并像这样启动应用程序: 这将创建另一个hi

  • 我正在使用某个抛出异常的库,并希望测试在抛出异常时我的代码行为是否正确。将其中一个重载方法截尾似乎不起作用。我得到了这个错误:Stubber不能应用于void。不存在变量类型T的实例类型,因此void确认为T