异步调用WebService

  这里用Winform演示如何异步调用WebService。

  首先在界面中拖入2个按纽,一个是同步,一个是异步,作为比较。新建立一个WebService,就用默认的HelloWorld方法来演示。

  在Winform中添加对这个WebService的引用,button1(同步按纽)和button2(异步按纽)中的事件如下:

        private void button1_Click(object sender, EventArgs e)
{
localhost.Service1 service = new AsyncWebService.localhost.Service1();
string s = service.SayHello();
MessageBox.Show("Main do something...");
Thread.Sleep(3000);
MessageBox.Show("Main done.");
MessageBox.Show(s);
}

localhost.Service1 myService;
private void button2_Click(object sender, EventArgs e)
{
//初始化WebService
myService = new AsyncWebService.localhost.Service1();
//给HelloWorld方法注册调用完成时执行的方法AsyncHelloWorldComplete
myService.HelloWorldCompleted += new AsyncWebService.localhost.HelloWorldCompletedEventHandler(AsyncHelloWorldComplete);
//开始异步调用
myService.HelloWorldAsync();
MessageBox.Show("Main do something...");
Thread.Sleep(3000);
MessageBox.Show("Main done.");
}
//异步调用完成时执行的方法
private void AsyncHelloWorldComplete(object sender, AsyncWebService.localhost.HelloWorldCompletedEventArgs e) {
string s = e.Result.ToString();
MessageBox.Show(s);
}

  在第二个按纽myService中有关于HelloWorld的有这几个:

    1.HelloWorld  这是同步执行的方法

    2.HelloWorldAsync  这是开始异步执行的方法

    3.HelloWorldCompleted  这是HelloWorld方法执行完成的事件,以上给这个事件注册了一个委托HelloWorldCompletedEventHandler,可以右击》GoToDefinition查看这个委托,这个委托有2个参数:object sender, HelloWorldCompletedEventArgs e,对于第二个参数e.Result就是需要异步执行的WebService方法(HelloWorld()方法)的返回结果。

  如果是在ASP.NET中异步执行的话,需要在页面属性中设置可以异步:Async="true"

  使用javascript,Ajax(异步)调用WebService的方法参考:使用ASP.NET AJAX异步调用Web Service和页面中的类方法

转载于:https://www.cnblogs.com/johnsmith/archive/2011/09/30/2196126.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值