我正在尝试将Async方法与Func一起使用,但是出现了错误。
无法将Async Lambda表达式转换为委托类型
'Func<HttpResponseMesage>'
。 Async Lambda表达式可能返回void、Task或Task<T>
,但这些都无法转换为'Func<HttpResponseMesage>'
。
以下是我的代码:
public async Task<HttpResponseMessage> CallAsyncMethod()
{
Console.WriteLine("Calling Youtube");
HttpClient client = new HttpClient();
var response = await client.GetAsync("https://www.youtube.com/watch?v=_OBlgSz8sSM");
Console.WriteLine("Got Response from youtube");
return response;
}
static void Main(string[] args)
{
Program p = new Program();
Task<HttpResponseMessage> myTask = p.CallAsyncMethod();
Func<HttpResponseMessage> myFun =async () => await myTask;
Console.ReadLine();
}
Error CS4010 无法将异步 lambda 表达式转换为委托类型 'Func<HttpResponseMessage>'。异步 lambda 表达式可能返回 void、Task 或 Task<T>,这些都不能转换为 'Func<HttpResponseMessage>'。
正确的应该是Func<Task<HttpResponseMessage>> myFun =async () => await myTask;
。 - Code Pope