为了账号安全,请及时绑定邮箱和手机立即绑定

从WCF服务调用异步方法

从WCF服务调用异步方法

C#
慕娘9325324 2019-11-20 14:32:31
我想从WCF服务中调用异步方法,例如:[ServiceContract]interface IService{    [OperationContract]    int SomeMethod(int data);}int SomeMethod(int data){    var query = ... build LINQ query;    var response = await query.ToListAsync();    return response.Length;}我不想添加async到IService接口或SomeMethod方法。使用异步方法是一个内部问题,不应在界面中反映出来。我怎样才能做到这一点?澄清:我的问题是await在非async方法中使用。我不希望更改服务合同(客户端不一定知道是什么async),也不想将方法拆分为BeginSomeMethod和EndSomeMethod。我想要一种await 内部使用的方法。
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

让我这样说,如果API在服务器上启动了异步操作(称为SomeMethodStart),它将如何通知客户端其完成情况?将会有一个客户端代理BeginSomeMethodStart及其EndSomeMethodStart方法,但是调用EndSomeMethodStart客户端将SomeMethodStart在服务器返回后立即返回,而不是在服务器端异步操作结束时返回。他需要的是正确地向客户端公开服务器端异步操作,并能够async/await在服务器上使用而不阻塞。该服务需要公开APM或TAP API。

查看完整回答
反对 回复 2019-11-20
?
米脂

TA贡献1836条经验 获得超3个赞

当(异步)服务器完成处理时,它将发送响应。BeginXXX方法完成后,没有响应发送。没有一个字节。在服务器上完成EndXXX方法之后,才发出响应。calling EndSomeMethodStart on the client will return as soon as SomeMethodStart returns on the server否-响应到达后返回。服务器完成所有处理后,响应到达。试试吧。与提琴手观察。

查看完整回答
反对 回复 2019-11-20
  • 3 回答
  • 0 关注
  • 479 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信