我希望在调用服务时使用async
await
个关键字,但想知道是否需要await
关键字?
修改示例如果找到;我想要做的是设置一个async
调用一个服务,该服务继续工作,但不需要等待响应:
async Task CallService(InformationForService informationForService)
{
var service = SetupService();
// Does this need the await keyword?
service.Doof(informationForService);
}
答案 0 :(得分:1)
如果您将函数声明为异步并且它返回Task,那么代码中的某些内容需要返回该类型。我没有在你的代码中看到任何内容,因为你没有使用await关键字,当调用被发送到服务时通常会从你的函数中产生,然后当对服务的调用响应时从下一行继续
如果您不关心服务返回的内容,请忽略它,但使用await关键字,因为这将允许您的代码在服务调用完成时继续其他工作。
async Task<int> CallService(InformationForService informationForService)
{
var service = SetupService();
// Does this need the await keyword?
await service.Doof(informationForService);
}
另请注意,如果您使用WCF调用服务,则可以发出一次单向调用,该调用在发送消息的最后一个字节后完成。 Juval Lowy discusses one-way calls in this paper
答案 1 :(得分:1)
方法不必是async
等待的。有许多方法会返回Task
并可由await
使用,即使它们不是async
。
我假设您的服务是WCF服务。在这种情况下,如果您(重新)使用VS2012生成代理,请为您的服务you'll get a DoofAsync
method that will work with await
上的每个方法Doof
生成。
您的CallService
方法不一定是async
;您只需返回Task
获得的DoofAsync
:
Task CallService(InformationForService informationForService)
{
var service = SetupService();
return service.DoofAsync(informationForService);
}