我正在尝试理解 async/await,我想知道这两种方法是否工作相同。如果不是,您能解释一下原因吗?
public async Task<Client> GetClient()
{
return await _clientRepository.GetAll().Where(x => x.Id == 1).FirstOrDefaultAsync();
}
public Task<Client> GetClient2()
{
return Task.FromResult(_clientRepository.GetAll().Where(x => x.Id == 1).FirstOrDefault());
}
public async Task Run()
{
var result = await GetClient();
var result2 = await GetClient2();
}
最佳答案
它们不一样,当你添加 async 关键字时,你启用了以下两个功能。
标记的async方法可以使用Await或await来指定挂起点。 await 运算符告诉编译器,在等待的异步过程完成之前,async 方法无法继续通过该点。同时,控制权返回给异步方法的调用者。
在 await 表达式中暂停异步方法并不构成该方法的退出,finally block 不会运行。
标记的异步方法本身可以被调用它的方法等待。
您应该在此处阅读异步/等待文档:https://msdn.microsoft.com/en-us/library/hh191443.aspx
关于c# - 异步/等待功能比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320743/