2010-07-20 127 views
2

我知道所有关于线程应用程序的知识,但之前没有通过Web服务完成此任务。我不想让客户端管理各种线程,而只想触发一个异步方法并从回调中获得结果。.Net异步Web服务调用

它看起来很直观 - 只需调用visual studio生成的代理类中的异步方法即可。但等待......我没有任何地方可以指定回电。

MSDN和其他sites告诉我我应该使用Begin [MethodName]和End [MethodName],但它们似乎不存在/已生成,我确实有[MethodName] Async方法see here),但它没有选项传递委托/回调。

我也有(静态)ServiceName.MethodNameEventHandler/Args可用,但不能使用它,因为它不是实例化服务的一部分。

这是怎么回事?以及如何从Web服务发送/接收回电。我注意到我所做的所有搜索结果都为我提供了很多旧网站。任何人都可以为我提供一个例子。

回答

0

如果您有[MethodName]异步方法,则应该有[MethodName]完成的事件,您可以订阅该事件,并且这将作为您的回调。

在vb.net它应该是这样的:

AddHandler yourWebProxyClassInstance.[MethodName]Completed, AddressOf YourMethod 
+0

如何在vb.net中做到这一点?你有没有页面?我有权访问这些方法,但只有异步方法是实例方法。 – 2010-07-20 16:06:40

+0

... AddHandler _svc.UploadPartCompleted,AddressOf x(object evnt)? – 2010-07-20 16:08:08

+0

是的,相似。您需要调整方法签名以匹配Completed事件。 – Nate 2010-07-20 16:31:20

0

我相信当你通过VS生成Web服务时,如果你想创建异步方法,有一个复选框。也许你忘了检查一下,所以你的服务没有开始和结束的方法?

+0

似乎并不存在 - 在上添加Web引用的这应该是 - 看看最后一个屏幕截图本网站页面http://blogs.msdn.com/b/kaevans/archive/2008/03/18/where-the-heck-is-add-web-reference-in-visual-studio-2008.aspx – 2010-07-20 15:58:55

+0

IIRC,this仅在VS2008 +中的添加服务引用上。但是,您可以将添加服务引用添加到.asmx Web服务中。 – Nate 2010-07-20 20:46:27