提问人:Shuwaki Ibrahim 提问时间:11/3/2023 更新时间:11/11/2023 访问量:51
Async/Await 似乎在 Winforms 中同步工作
Async/Await Seems to work synchronously in Winforms
问:
我有一段代码,如下所示
Private Async Sub Form1_Load(sender as Object, e as EventArgs) Handles Form1.Load
Await Load_DataAsync()
End Sub
Private Function Load_DataAsync as Task(Of Boolean)
FetchData()
Return Task.FromResult(True)
End Function
Private Sub FetchData()
'Connects to Db and collect the data
End Sub
在UI响应能力方面,我看不出等待Load_DataAsync()和在没有await关键字的情况下调用它之间有任何区别。
我尝试了以下方法
Await Task.Run(Function()
Load_DataAsync()
End Function)
并且应用程序在不阻塞 UI 的情况下继续进行
请问我做错了什么
答:
0赞
Panos M
11/11/2023
#1
不阻止 UI 的一种方法是将操作作为任务运行。在你的情况下,正如你提到的,是正确的方法,否则你将在调用线程上运行。同样,正如其他人所评论的那样,建议使用异步数据库操作。Await Task.Run(Function() Load_DataAsync())
FetchData()
评论
async
await
FetchData
await Task.Run(FetchData)
DbConnection.OpenAsync()
DbCommand.ExecuteNonQueryAsync()
Form1_Load
Async
Await
Load_DataAsync
Await
FetchData
FetchData