如果太明显了,请耐心等待!我无法区分这两个版本。
在第一个版本中,我正在等待线程完成I / O操作,将结果分配给局部变量&返回任务。
async public Task<int> GetUpdateFromManager(string name)
{
int newSalary = 0;
await Task.Run(() =>
{
PayrollDB db = new PayrollDB();
newSalary = db.Employees.Where(emp => emp.Name == name).FirstOrDefault().Salary;
});
return newSalary;
}
我等待从任务返回。
async public Task<int> GetUpdateFromManager(string name)
{
return await Task.Run(() =>
{
PayrollDB db = new PayrollDB();
return db.Employees.Where(emp => emp.Name == name).FirstOrDefault().Salary;
});
}
他们会一直工作吗?如果是积极的结果&amp;当数据库调用thwows异常?
答案 0 :(得分:2)
是的,他们的工作方式相同。但是它们存在一些问题。
1)不要使用Task.Run
来实现异步方法。相反,请使用EF6和其他数据库API中提供的异步查询。
2)使用Async
结束您的方法名称,以关注TAP guidelines。