Исключение, вызванное задачей Await

Я новичок в функциях Async, и я изучаю его. Я написал код, который возвращает значение из функции 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

vb.net,async-await,

1

Ответов: 1


3 принят

Ваша проблема заключается в том HandleFileAsync, где вы ожидаете запуска синхронной функции aFunction. Я не уверен, почему вы явно не вводите свой параметр и не возвращаете значение в эту функцию, но в конце дня это действительно не касается вашей проблемы, поэтому я проигнорирую.

Поскольку aFunctionон не является асинхронным, вам не нужно его ждать или создать Task.Run (aFunction (x)). Ваша ошибка заключается Actionв ожидании асинхронности Taskили функции, возвращающей асинхронный Task.

Просто измените HandleFileAsyncследующее:

Async Function HandleFileAsync(ByVal x As Integer) As Task(Of Integer)
    Return  aFunction(x)
End Function
vb.net, асинхронному Await,
Похожие вопросы