Rap*_*aël 5 c# asynchronous task async-await
我看到一些同事的代码,他选择不等待数据库调用而只返回任务。例如
public Task<UpdateResult> AddActivityAsync(ClaimsPrincipal principal, Activity activity)
{
return _userManager.SaveToDatabaseAsync(principal, activity);
}
Run Code Online (Sandbox Code Playgroud)
与_userManager.SaveToDatabaseAsync异步一样,我会以这种方式实现
public async Task<UpdateResult> AddActivityAsync(ClaimsPrincipal principal,
Activity activity)
{
return await _userManager.SaveToDatabaseAsync(principal, activity);
}
Run Code Online (Sandbox Code Playgroud)
这个方法的调用方法总是等待它:
await _profile.AddActivityAsync(..., ...)
Run Code Online (Sandbox Code Playgroud)
不使内部方法异步并只返回任务,让调用者等待它有什么好处吗?我以为我们必须一直写 Async ......
您不需要等待返回 a 的方法,如果您在该方法上Task<T>有关键字,代码将异步运行。async您的同事已经删除了它,因此故意同步运行,并让调用代码实现它(如果他们选择的话)。
这取决于该代码在哪一层运行。如果它很深,最好让更高的代码层选择异步执行并在那里保持控制。
你绝对不需要“一直写异步”。关键字的目的async只是将方法标记为能够返回 aTask<T>并能够使用await关键字。关键字await调用框架来执行任务并提供异步处理。
TL;DR:这是一个选择。
我欢迎任何人在这方面改进或纠正我,因为我不是大师。
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |