Вы почти правильно перевели
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
HttpResponseMessage response =
new HttpResponseMessage(HttpStatusCode.InternalServerError);
response.Content = new StringContent(Content);
response.RequestMessage = Request;
return Task.FromResult(response);
}
в
Public Async Function ExecuteAsync(ByVal cancellationToken As CancellationToken) As Task(Of HttpResponseMessage)
Dim response As HttpResponseMessage = New HttpResponseMessage(HttpStatusCode.InternalServerError)
response.Content = New StringContent(Content)
response.RequestMessage = Request
Return Task.FromResult(Of HttpResponseMessage) (response) 'this line shows error
End Function
Единственной ошибкой было добавление Async
, которого не было в оригинале, поэтому его следует удалить:
Public Function ExecuteAsync(ByVal cancellationToken As CancellationToken) As Task(Of HttpResponseMessage)
Dim response As HttpResponseMessage = New HttpResponseMessage(HttpStatusCode.InternalServerError)
response.Content = New StringContent(Content)
response.RequestMessage = Request
Return Task.FromResult(Of HttpResponseMessage) (response) 'this line shows error
End Function
Async
не является частью сигнатуры метода и не является обязательным требованием для написания методов, которые можно использовать с await
- если метод возвращает Task
, его можно ожидать.
Оригинал C # не использует async
в своем определении, потому что он на самом деле является синхронным (как и ваш перевод на VB). Использование Async
для этой функции приведет только к предупреждению компилятора , исправление которого потребует удаления Async
.
Использование Task.FromResult(Of HttpResponseMessage) (response)
является правильным и может быть даже упрощено до Task.FromResult(response)
, потому что компилятор может вывести тип.
Если для вас отображается ошибка о том, что FromResult
не является членом Task
(который , безусловно, ), то в вашем решении должен быть другой класс с именем Task
, который тени класса System.Threading.Tasks.Task
. В этом случае обратитесь к нему более тщательно, например, Tasks.Task.FromResult(response)
или Threading.Tasks.Task.FromResult(response)
.