C# 使用异步等待调用服务
我正在考虑在服务调用中使用C# 使用异步等待调用服务,c#,async-await,C#,Async Await,我正在考虑在服务调用中使用asyncawait关键字,但想知道是否需要await关键字 如果发现,则修改示例;我想做的是设置一个async调用,调用一个正在进行作业的服务,但不需要等待响应: async Task CallService(InformationForService informationForService) { var service = SetupService(); // Does this need the await keyword? serv
async
await
关键字,但想知道是否需要await
关键字
如果发现,则修改示例;我想做的是设置一个async
调用,调用一个正在进行作业的服务,但不需要等待响应:
async Task CallService(InformationForService informationForService)
{
var service = SetupService();
// Does this need the await keyword?
service.Doof(informationForService);
}
如果将函数声明为async并返回Task,则代码中的某些内容需要返回该类型。我在您的代码中没有看到任何这样的情况,因为您没有使用wait关键字,当调用被发送到服务时,它通常会从您的函数中产生,然后在服务调用响应时从下一行继续 如果您不关心服务返回的内容,请忽略它,但使用wait关键字,因为这将允许您的代码在服务调用完成时继续执行其他工作
async Task<int> CallService(InformationForService informationForService)
{
var service = SetupService();
// Does this need the await keyword?
await service.Doof(informationForService);
}
异步任务调用服务(InformationForService InformationForService)
{
var service=SetupService();
//这需要等待关键字吗?
等待服务。Doof(信息服务);
}
另外,请注意,如果使用WCF调用服务,则可以发出单向调用,该调用在发送消息的最后一个字节后完成 方法不必是
async
即可等待。有许多方法返回任务
,可供等待
使用,即使它们不是异步
我假设您的服务是WCF服务。在这种情况下,如果您使用VS2012(重新)生成一个代理,则针对服务上的每个方法Doof
您的CallService
方法不需要是async
;您只需返回从DoofAsync
获取的任务
:
Task CallService(InformationForService informationForService)
{
var service = SetupService();
return service.DoofAsync(informationForService);
}
返回的是什么
Task
?您的代码是如何编译的?很抱歉,我是从一个示例中复制的,我忘了我把它作为返回。您是在问方法Doof
是否需要wait关键字。它是否返回任务?它本身是否使用wait
关键字或Task.Run()
?如果是的话,那么是的——这可能需要等待。@默认情况下,我不太担心会有什么反应。我想Doof
服务,然后应用程序可以忘记调用。对,如果返回if void,那么我仍然说等待服务。Doof(x)
@LukeDuddridge方法需要返回一个任务
才能等待。@默认为ok,所以它不能无效。它可以是Task
还是需要返回类型?Doof
函数的前缀应该是Async
,以通知用户它使用了Async Task
返回值。@LukeDuddridgewait Task
等同于void
Wait Task
与返回值T
@LukeDuddridge等效。您的问题说您正在研究async
-Wait
,所以这就是Stephen的答案。而且您不能合理地使用VS2010中的async
-wait
。@LukeDuddridge:我建议您升级。我不知道VS2010->VS2012中有任何停止播放的问题;事实上,这是最平滑的过渡之一。@svick噢!对不起。完全忽略了关键问题,这意味着我不能使用Async Wait!因为某种原因我以为我可以。。。我们将停留在VS2010上,现在,我们只得到Windows7!