中(准确的说是vs 中)异步WebService异步调用的方式的例子
void DoSomethingTest()
{
localhostService service = new WindowsApplocalhostService();
serviceHelloWorldCompleted += new WindowsApplocalhostHelloWorldCompletedEventHandler(service_HelloWorldCompleted);
// do Asyn calling here
serviceHelloWorldAsync();
}
void service_HelloWorldCompleted(object sender WindowsApplocalhostHelloWorldCompletedEventArgs e)
{
if (eError == null)
{
MessageBoxShow(eResult);
}
else
{
MessageBoxShow(eErrorMessage);
}
}
服务器端代码
[WebService(Namespace = )]
[WebServiceBinding(ConformsTo = WsiProfilesBasicProfile_)]
public class Service : SystemWebServicesWebService
{ public Service () {
}
[WebMethod] public string HelloWorld() {
return Hello World;
}
}
很简单没有了AsyncCallbackIAsyncResult 这两个烦人的东西调用的代码变得简洁优雅了而且可以从eResult得到强类型的返回值(上例为Hello World)但是有兴趣的话可以看看vs 生成的Referancecs文件那可比中的复杂很多其中可以看到SystemComponentModelAsyncCompletedEventArgs SystemThreadingSendOrPostCallback(delegate)这两个在 x 中没有的怪物估计用到的地方还不止WebService客户端