从Async方法返回任务的基础知识

时间:2014-07-31 13:01:40

标签: c# async-await

如果太明显了,请耐心等待!我无法区分这两个版本。

在第一个版本中,我正在等待线程完成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异常?

1 个答案:

答案 0 :(得分:2)

是的,他们的工作方式相同。但是它们存在一些问题。

1)不要使用Task.Run来实现异步方法。相反,请使用EF6和其他数据库API中提供的异步查询。

2)使用Async结束您的方法名称,以关注TAP guidelines