我是异步功能的新手,我正在学习它。我编写的代码从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
答案 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