在 Task.Run 中调用异步函数
Calling an async function in Task.Run
我使用了一个等待表格,里面有一个动画 gif。
我发现用 gif 动画“移动”显示此表单的唯一方法是:
frmWaiting.Show()
Await Task.Run(Sub() AnyKindOfActionInASub)
frmWaiting.Close()
它运行良好,但是如果我需要调用一个异步函数 returning 一个对象而不是一个简单的子函数怎么办?如果我这样做:
Dim TwitterAccountToAdd As TwitterAccount
frmWaiting.Show()
TwitterAccountToAdd = Await nsTweetInvi.CallTwitterApi.GetApiTwitterDatasAccount(Me.txtTwitterId.Text)
frmWaiting.Close()
动画 gif 替换为白色方块。
考虑到 GetApiTwitterDatasAccount return 一个 Task(Of TwitterAccount),我该怎么做?
听从 Jimi 的建议,我找到了一个完美的解决方案。
Private TwitterAccountToAdd As New TwitterAccount
Dim strTwitterId As String = Me.txtTwitterId.Text
Dim frmWaitingTwitter As New frmWaiting
Me.TopMost = False
With frmWaitingTwitter
.TopMost = True
.Show()
.StartPosition = FormStartPosition.CenterScreen
End With
TwitterAccountToAdd = Await Task.Run(Function() CheckAndGetTwitterAccount(strTwitterId))
frmWaitingTwitter.Close()
Me.TopMost = True
我使用了一个等待表格,里面有一个动画 gif。 我发现用 gif 动画“移动”显示此表单的唯一方法是:
frmWaiting.Show()
Await Task.Run(Sub() AnyKindOfActionInASub)
frmWaiting.Close()
它运行良好,但是如果我需要调用一个异步函数 returning 一个对象而不是一个简单的子函数怎么办?如果我这样做:
Dim TwitterAccountToAdd As TwitterAccount
frmWaiting.Show()
TwitterAccountToAdd = Await nsTweetInvi.CallTwitterApi.GetApiTwitterDatasAccount(Me.txtTwitterId.Text)
frmWaiting.Close()
动画 gif 替换为白色方块。
考虑到 GetApiTwitterDatasAccount return 一个 Task(Of TwitterAccount),我该怎么做?
听从 Jimi 的建议,我找到了一个完美的解决方案。
Private TwitterAccountToAdd As New TwitterAccount
Dim strTwitterId As String = Me.txtTwitterId.Text
Dim frmWaitingTwitter As New frmWaiting
Me.TopMost = False
With frmWaitingTwitter
.TopMost = True
.Show()
.StartPosition = FormStartPosition.CenterScreen
End With
TwitterAccountToAdd = Await Task.Run(Function() CheckAndGetTwitterAccount(strTwitterId))
frmWaitingTwitter.Close()
Me.TopMost = True