本文是一篇实训文章,例子简单,希望对初学者有所启示.
以webservice中经典的Helloworld为例子:
1.新建一个网站,选择ASP.NET web 服务,选择语言为C#,打开App_Code下的Service.cs文件,其他的都不变,只是在输出前添加一个System.Threading.Thread.Sleep(5000)用来等待.
- [WebMethod]
- public string HelloWorld()
- {
- System.Threading.Thread.Sleep(5000);
- return "Hello World";
- }
2.运行WEB服务。
3.右击项目名,选择添加WEB引用,将运行的WEB服务的地址复制在要添加的地址栏中,引用名为localhost.添加引用.
我的地址是http://localhost:8224/Service.asmx,以下代码中自己替换下就可以了。
4.新建一个项目,选择windows应用程序,拖放一个按钮和一个文本框到FORM中,按钮该名为BtnSync.双击按钮,添加以下代码:
- private void BtnSync_Click(object sender, EventArgs e)
- {
- localhost.Service svr = new localhost.Service();
- svr.Url = "http://localhost:8224/Service.asmx";
- svr.HelloWorldCompleted += new localhost.HelloWorldCompletedEventHandler(svr_HelloWorldCompleted);
- svr.HelloWorldAsync();
- }
- private void svr_HelloWorldCompleted(object source,localhost.HelloWorldCompletedEventArgs e)
- {
- TextBox1.Text = e.Result.toString();
- }
5.运行应用程序,查看效果吧,在点击了按钮5秒中之后,在文本框中才回出现Hello World.
总结
在一些注重服务调用速度,而不考虑回调的参数时,或者仅仅对返回值做日志处理的时候.异步调用会发挥很大的作用.异步调用还有其他的方法,个人觉得事件驱动的方式简单明了。