如果我有以下方法:
public async Task<T> DoSomethingAsync<T>(Func<Task<T>> action)
{
// bunch of async code..then "await action()"
}
Run Code Online (Sandbox Code Playgroud)
以下两种用法有什么区别:
public async Task MethodOneAsync()
{
return await DoSomethingAsync(async () => await SomeActionAsync());
}
public async Task MethodTwoAsync()
{
return await DoSomethingAsync(() => SomeActionAsync());
}
Run Code Online (Sandbox Code Playgroud)
两个编译..都工作..没有R#警告......
有什么区别(如果有的话)?如果调用者等待,两个方法是否都会运行async?
dvo*_*orn -1
Async/await 构造插入一些基础结构代码,这些代码仅在“await”之后有一些代码时才有用。否则它基本上什么也不做。你的代码相当于
public Task MethodThreeAsync()
{
return DoSomethingAsync(() => SomeActionAsync());
}
Run Code Online (Sandbox Code Playgroud)
所有这三种方法都是“真正的异步”。