2010-07-20 161 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