FireandForget(Asynch)ASP.NETMethodCall我们有一个服务,可以将客户端信息更新到服务器端。服务呼叫大约需要几秒钟是正常的。现在我们有一个新页面,在一个实例中,它可以更新大约35-50位客户的信息。此时无法更改服务接口以接受所有客户端。我需要调用一个方法(比如“ProcessCustomerInfo”),它将遍历客户信息并调用Web服务35-50次。异步调用服务用处不大。我需要异步调用方法“ProcessCustomerInfo”。我正在尝试使用RegisterAsyncTask。网络上有各种示例,但问题是在我离开此页面后发起此调用后,处理停止。是否可以实现FireandForget方法调用,以便用户可以在不停止方法处理的情况下离开页面(重定向到另一个页面)?详细信息:http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx基本上,您创建一个指向要异步运行的方法的委托,然后使用BeginInvoke启动它。//声明委托-随便命名publicdelegatevoidProcessCustomerInfoDelegate();//实例化委托并使用BeginInvokeProcessCustomerInfoDelegated=newProcessCustomerInfoDelegate(ProcessCustomerInfo.nullInfo)启动它;//simpleDelegate(将异步运行的方法voidProcessCustomerInfo(){//这是你可以调用你的web服务50次的地方}这是我想做的...publicclassDoAsAsync{privateActionaction;privateboolended;publicDoAsAsync(Actionaction){this.action=action;}publicvoidExecute(){action.BeginInvoke(newAsyncCallback(End),null);}privatevoidEnd(IAsyncResultresult){if(ended)return;try{((Action)((AsyncResult)result).AsyncDelegate).EndInvoke(result);}catch{/*dosomething*/}finally{ended=true;}}}ThennewDoAsAsync(ProcessCustomerInfo).Execute();你也需要在Page指令属性中设置Async我不确定它到底有多可靠,但它确实可以满足我的需要。也许这是一年前写的。我认为问题在于,您的Web服务期望从客户端返回响应,即服务调用本身不是一种单向通信。如果您将WCF用于Web服务,请查看http://moustafa-arafa.blogspot.com/2007/08/oneway-operation-in-wcf.html以了解单向服务调用。我的两分钱:IMO不管是谁把这个构造放在你身上,你都不能改变服务接口来添加新的服务方法,而那是提出不合理要求的人。即使您的服务是公共使用的API,添加新的服务方法也不应该影响任何现有的消费者。当然可以。我想你想要的是一个真正的后台线程:RunningBackgroundThreadsSafelyinASP.NET2.0CreatingBackgroundThreadstoLogIPInformation以上由C#学习教程分享:FireandForget(Asynch)ASP.NETMethodCalls所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
