Ale*_*SFT 4 vb.net 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
Run Code Online (Sandbox Code Playgroud)
我认为您误解了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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
代码中会发生同样的事情:3秒后,标签将更改。但是,两者之间存在巨大差异。在您的代码Async/await版本中,UI 不会被阻止,这意味着您可以按下另一个按钮,并且那里的代码仍将立即执行。
Await表示正在进行的任务很长,UI线程将不会继续执行,sub直到该任务完成(在另一个线程上)。完成后,UI线程将在其离开的位置拾取并更新标签。
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |