从异步函数返回值

时间:2016-09-21 14:14:37

标签: vb.net asynchronous

我试图使用我的第一个异步功能是VB.NET,我收到一个我不明白的错误。

我已阅读文档(https://msdn.microsoft.com/fr-fr/library/mt674902.aspx

' - 返回类型是Task或Task(Of T)。 (参见"返回类型"部分。)

'这里是Task(Of Integer),因为return语句返回一个整数。

这是(非常简单的)代码。

Async Sub Main()
    Dim test
    test = Await funcAsync()
End Sub

Function funcAsync() As Task(Of Integer)
    Dim result As Integer
    result = 2
    funcAsync = result
End Function

我在funcAsync = result行中出现编译错误:类型值'整数'无法转换为'任务(整数)'

我无法弄清楚我在这里做错了什么。

非常感谢你的帮助,

1 个答案:

答案 0 :(得分:1)

您只能对使用" Async"声明的函数使用Await。关键词。 " Async"关键字无法在子资源上使用。

如果您的代码是用于控制台应用程序,则需要将所有异步处理放在函数内,而在Sub Main上应该调用该函数返回的对象上的Wait()方法。这是一个适合我的代码:

Sub Main()
    DoProcessing().Wait()
    Console.ReadKey()
End Sub

Async Function DoProcessing() As Task
    Dim test = Await funcAsync()
    Console.WriteLine(test)
End Sub

Async Function funcAsync() As Task(Of Integer)
    Dim result = 2
    Return result
End Function