从Web API操作方法调用异步方法

时间:2014-11-18 00:50:42

标签: c# asp.net-mvc asp.net-web-api2

我从我的Web API操作方法调用异步方法看起来像这样,但我得到了#34;无法隐式地将类型任务员工转换为员工"错误。

我需要做什么?

我的Web API操作方法如下所示:

public IHttpActionResult GetEmployee()
{

   // Get employee info
   Employee emp = myDataMethod.GetSomeEmployee();

   return Ok(emp);
}

我打电话的方法如下:

public static async Task<Employee> GetSomeEmployee()
{
   Employee employee = new Employee();

   // Some logic here to retrieve employee info

   return employee;
}

我需要做什么才能调用此方法来检索员工信息?

P.S。 GetSomeEmployee()方法必须是异步的,因为它会进行其他异步调用以检索员工数据。

1 个答案:

答案 0 :(得分:4)

您需要同步调用该方法,或使用await。 E.g:

同步(GetEmployee()将阻止直到GetSomeEmployee()完成):

public IHttpActionResult GetEmployee()
{

   // Get employee info
   Employee emp = myDataMethod.GetSomeEmployee().Result;

   return Ok(emp);
}

异步(GetEmployee()将立即返回,然后在GetSomeEmployee()完成时继续):

public async Task<IHttpActionResult> GetEmployee()
{

   // Get employee info
   Employee emp = await myDataMethod.GetSomeEmployee();

   return Ok(emp);
}