如何使用Async Await

时间:2016-11-22 13:47:34

标签: c# asynchronous async-await

我的WCF服务中有一个主方法。请帮我指出我需要放置Aync和Await的确切位置。我在main方法中有2个方法,一个方法更新一个表,另一个方法从SQl获取值,我将值作为对象返回给客户端。我希望在Parallel中执行2个方法。我想快速将对象返回给客户端

public object GetSensorConfiguration(string desc)
{
   object oObject = null;
   UpdateTable(desc);
   oObject = GetobjectValue(desc);
   return oObject ;
}

private void updatetable(string desc)
{
    // no return value.. just update    
}

private object GetobjectValue(string desc)
{
    object objA = null;
    //Get values for the objA;
    return objA;
}

1 个答案:

答案 0 :(得分:1)

首先,您从数据库调用开始,例如,使用Entity Framework中提供的异步API:

private async Task UpdateTableAsync(string desc)
{
  ...
  await db.SaveChangesAsync();
}

private async Task<object> GetObjectValue(string desc)
{
  object objA = await ...;
  return objA;
}

然后你可以在你的&#34; main&#34;中消费它们。方法。既然你想同时执行它们(而不是&#34; parallel&#34;),那么你想要使用Task.WhenAll

public async Task<object> GetSensorConfiguration(string desc)
{
  var updateTask = UpdateTableAsync(desc);
  var getTask = GetObjectValueAsync(desc);
  await Task.WhenAll(updateTask, getTask);
  return await getTask;
}