我今天花了整整一天阅读关于异步/等待但我仍然无法完全理解它。我理解在调用await语句时的异步方法中 - 该方法暂停,直到返回结果。我希望在我的Web窗体中提高性能,以便将数据插入到我的数据库中。基本上,目前我这样做:
Protected Async Sub btnSave_Click(sender As Object, e As EventArgs)
Dim task as Task = CreateItem()
ClearModalControls()
CloseModal()
await task
End Sub
Private Async Function CreateItem() as Task
Dim item as Item = New Item With {
.id = 1,
.name = "task"}
_db.Items.InsertOnSubmit(item)
_db.SubmitChanges()
Grid.Rebind()
End Sub
我想在Item对象插入数据库之前关闭一个模态(具有用户输入的I / O控件),因为这需要几秒钟的时间。在这几秒钟内 - 用户可以浏览网站和/或进行任何其他操作。似乎我无法获得我想要的功能。我的代码有问题吗?
我知道我最后可能只有await task
并删除Dim task as Task = CreateItem()
但是我在该方法中有一些逻辑,以防出错和什么会阻止Modal关闭/拉动如果关闭,则再次启动模态。
编辑:我的模态/控件是AJAXified。回发不会重新加载页面,只会重新加载面板。