转载

WebService 同步调用,异步调用

阅读目录

一:添加WebService服务

二: 添加“客户程序”(这里用winform)用于调用WebService服务

三:异步调用过程解释

一:添加WebService服务

1、添加一个空网站项目,2、在项目里面添加一个WebService服务( WebServiceTest.asmx ),3、添加“ HelloWorld ”方法

代码:(WebServiceTest.asmx)

WebService 同步调用,异步调用
using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Web; using System.Web.Services; namespace t1_WebService {  /// <summary>  /// WebServiceTest 的摘要说明  /// </summary>  [WebService(Namespace = "http://tempuri.org/")]  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  [System.ComponentModel.ToolboxItem(false)]  // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。   // [System.Web.Script.Services.ScriptService]  public class WebServiceTest : System.Web.Services.WebService  {   [WebMethod]   public string HelloWorld(int a,int b)   {    //等待5秒    Thread.Sleep(5000);    return (a + b).ToString();   }  } } 
View Code

二: 添加“客户程序”(这里用winform)用于调用WebService服务

1、添加一个WinForm项目。

2、添加“引用服务(WebService服务)”

3、添加一个WinForm窗体

4、在BtnAdd写调用的代码如下

WebService 同步调用,异步调用
private void button1_Click(object sender, EventArgs e)         {  ServiceReferenceTest.WebServiceTestSoapClient client = new ServiceReferenceTest.WebServiceTestSoapClient();  int a = int.Parse(tbxA.Text);  int b = int.Parse(tbxB.Text);  //同步调用  //tbxResult.Text = client.HelloWorld(a, b);  //下面是异步调用  //注册回调事件  client.HelloWorldCompleted += client_HelloWorldCompleted;  //调用异步方法  client.HelloWorldAsync(a, b);         }         void client_HelloWorldCompleted(object sender, ServiceReferenceTest.HelloWorldCompletedEventArgs e)         {  //回调事件触发,返回结果  tbxResult.Text = e.Result;         } 
View Code

PS:上面有同步调用(已注释掉)和异步调用 。

在调用WebService服务要比较长的时间时,可以用异步调用做到不卡主线程。

正文到此结束
Loading...