有人可以解释这对同步方法意味着什么吗?如果我尝试将方法更改为 async
然后VS提示一下。
这个有效:
public Task MethodName()
{
return Task.FromResult<object>(null);
}
这行不通:
public async Task MethodName()
{
return Task.FromResult<object>(null);
}
所以基本上我想知道这到底是什么意思:Task.FromResult<object>(null);
最佳答案
async
方法与普通方法不同。无论你从async
返回什么方法包装在 Task
中.
如果你没有返回任何值(void),它将被包裹在Task
中, 如果你返回 int
它将被包裹在 Task<int>
中等等。
如果你的异步方法需要返回int
您会将方法的返回类型标记为 Task<int>
然后你会返回普通的int
不是 Task<int>
.编译器将转换 int
至 Task<int>
给你。
private async Task<int> MethodName()
{
await SomethingAsync();
return 42;//Note we return int not Task<int> and that compiles
}
同样,当你返回时Task<object>
你的方法的返回类型应该是 Task<Task<object>>
public async Task<Task<object>> MethodName()
{
return Task.FromResult<object>(null);//This will compile
}
由于您的方法返回 Task
,它不应返回任何值。否则它不会编译。
public async Task MethodName()
{
return;//This should work but return is redundant and also method is useless.
}
请记住,没有 await
的异步方法声明不是async
.
关于c# - 异步等待返回任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191512/