Await Task抛出异常

时间:2016-10-15 03:24:31

标签: vb.net async-await

我是异步功能的新手,我正在学习它。我编写的代码从Async函数返回一个值并将其打印到控制台。运行代码后System.Reflection.AmbiguousMatchException获取Dim result As Integer = Await task,我不知道原因。这是我的代码:

Module Module1
    Sub Main()
        Dim task = New Task(AddressOf testAync)
        task.Start()
        task.Wait()
    End Sub

    Async Sub testAync()
        Dim task As Task(Of Integer) = HandleFileAsync(9000)
        Dim result As Integer = Await task
        Console.WriteLine(result)
        Console.ReadLine()
    End Sub

    Async Function HandleFileAsync(ByVal x As Integer) As Task(Of Integer)
        Return Await Task.Run(aFunction(x))
    End Function

    Public Function aFunction(ByVal intIn)
        Return intIn
    End Function
End Module

1 个答案:

答案 0 :(得分:3)

您的问题在于HandleFileAsync,您正在等待同步函数aFunction的运行。我不确定为什么你没有明确地输入你的参数并在该函数中返回值,但是在一天结束时它与你的问题没有关系,所以我会忽略。

由于aFunction不是异步的,因此您无需等待它或创建任务。您的错误是Task.Run(aFunction(x))期待异步Action或返回异步Task的函数。

只需将HandleFileAsync修改为以下内容:

Async Function HandleFileAsync(ByVal x As Integer) As Task(Of Integer)
    Return  aFunction(x)
End Function