我的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;
}
答案 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;
}