WebService 同步调用,异步调用
阅读目录
一:添加WebService服务
二:添加“客户程序”(这里用winform)用于调用WebService服务
三:异步调用过程解释
一:添加WebService服务
1、添加一个空网站项目,2、在项目里面添加一个WebService服务(WebServiceTest.asmx),3、添加“HelloWorld”方法
代码:(WebServiceTest.asmx)
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(); } } }
二:添加“客户程序”(这里用winform)用于调用WebService服务
1、添加一个WinForm项目。
2、添加“引用服务(WebService服务)”
3、添加一个WinForm窗体
4、在BtnAdd写调用的代码如下
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; }
三:异步调用过程解释
PS:上面有同步调用(已注释掉)和异步调用 。
在调用WebService服务要比较长的时间时,可以用异步调用做到不卡主线程。