微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Winform异步调用WebService

  http://www.cnblogs.com/johnsmith/archive/2011/09/30/2196126.html

这里用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;
        void button2_Click(//初始化WebService
            myService = 给HelloWorld方法注册调用完成时执行的方法AsyncHelloWorldComplete
            myService.HelloWorldCompleted += new AsyncWebService.localhost.HelloWorldCompletedEventHandler(AsyncHelloWorldComplete);
            开始异步调用
            myService.HelloWorldAsync();
            MessageBox.Show(");
        }
        异步调用完成时执行的方法
        void AsyncHelloWorldComplete(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和页面中的类方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐