gpt4 book ai didi

vb.net - async/await没有做出异步效果

转载 作者:行者123 更新时间:2023-12-02 08:03:51 26 4
gpt4 key购买 nike

Async/await 没有效果,

我认为label1应该立即执行。

 Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Await Task.Run(Sub()
Threading.Thread.Sleep(3000)
End Sub)
Label1.Text = "123"
End Sub

最佳答案

我认为您误解了 Async/Await 的工作原理。在您的代码中:

 Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Await Task.Run(Sub()
Threading.Thread.Sleep(3000)
End Sub)
Label1.Text = "123"
End Sub

label1在 3 秒延迟结束之前不会改变。您的事件处理程序等待任务,然后继续执行,更改标签。但Async/Await肯定有效果。

将您的代码与此代码进行比较:

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
threading.Thread.Sleep(3000)
Label1.Text = "123"
End Sub

与您的代码中会发生同样的事情:3秒后标签将发生变化。然而,有一个巨大的区别:在您的代码中,Async/await 版本中,UI 不会阻塞,这意味着您可以按另一个按钮,那里的代码仍会立即执行。

Await 表示正在执行一个很长的任务,并且 UI 线程不会继续执行 sub,直到该任务完成(在不同的线程上)。一旦完成,UI 线程就会从上次离开的地方继续更新标签。

关于vb.net - async/await没有做出异步效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57321919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com