All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
visual c++ MFC运行时类型识别宏
C#教程:COM+不同用途的类型应用实例
Redhat,Linux,AS4下的LAMP与Discuz安装_php资料_编程技术
PHP实例:用PHP简单实现多条件查询_php资料_编程技术
怎么用javascript进行拖拽_JavaScript技术_编程技术
Visual,Studio,2008,简体中文版,测试版2,下载地址_[Asp.Net教程]
asp.net2.0母版页嵌套使用实例
C#中WebBrower控件应用实例
TreeView服务器控件的功能和属性
使用C#在进度条中显示复制文件的进度_[Asp.Net教程]
Reading number is top 10 pictures
a pure sister
Men's and women's orgasms
中国女孩大胆自拍,显露完美身材2
奇趣的世界记录2
你白吃了多少药
张家界的玻璃桥
史上最大的哺乳动物迁移
The money of more than 100 countries and regions15
可爱的狗熊们
做运动的校花1
Download software ranking
Dance with duck(male prostitution)
传奇私服架设教程
天龙八部十二宫服务端
linux高级编程
jBuilder2006
Tram sex maniac 2 (H) rar bag8
Tram sex maniac 2 (H) rar bag12
功夫熊猫2(上集)
徐若瑄成名作“魔鬼天使”
C#编程思想
aaa published in(发表于) 2013/12/15 8:53:47 Edit(编辑)
教程:使用WebService进行异步通信_.net资料_编程技术

教程:使用WebService进行异步通信_.net资料_编程技术

教程:使用WebService进行异步通信_.net资料_编程技术-你的首页-uuhomepage.com

  通常在WEB应用程序中不会考虑到这个需求。做智能客户端的时候,当用到WebService时,由于服务器处理速度、网络传输速度等各种原因会使一个WebService从请求开始到获得响应结果之间等待一段时间,这时候线程会处于阻塞状态,程序会等待请求结果导致客户端无法进行其他的动作或处理。这时候就需要异步的使用WebService。


  最容易被想到的方法当然是建立一个新的线程来执行WebService的请求并获得结果,这样就可以不影响程序的主线程的工作,并且也非常容易实现,但是在一个复杂的应用程序中,用户也许会同时请求多个webservice,这时候就得创建并控制多个线程。多线程的控制虽然可以实现很好的应用程序,但难度是比较大的,而且很容易引起异常。


  在.net的SDK中实际上就有关于异步调用webservice的介绍和示例。其主要的工作原理和流程如下:


方法一、
private void button_Click_(object sender, System.EventArgs e)
{
//为一个Webservice的代理类创建一个实例
asy.asynchronism someWS = new asy.asynchronism();

//创建一个异步回调对象,构造函数的参数为回调的方法,该回调的方法必须包含一个异步操作状态类型的参数
System.AsyncCallback cb= new AsyncCallback(showmsg);

//开始进行异步通信,通常定义一个IAsyncResult异步操作状态类型的变量来接收开始异步通信方法所返回的通信状态
//通过这个操作状态的实例就可以掌握当前通信状态。
//如:System.IAsyncResult ar = someWS.BeginHelloWorld(cb,someWS);
someWS.BeginHelloWorld(cb,someWS);

}

void showmsg(IAsyncResult ar) //必须要有一个IAsyncResult类型的参数
{

//定义一个代理类的类型的变量接收所在回调方法的参数的异步操作信息
asy.asynchronism someWS=(asy.asynchronism)ar.AsyncState;

//该代理类实例调用End方法来获得WebService的结果
MessageBox.Show(someWS.EndHelloWorld(ar));

}
方法二、
private void button_Click_(object sender, System.EventArgs e)
{
//为一个Webservice的代理类创建一个实例
asy.asynchronism someWS = new asy.asynchronism();

System.IAsyncResult ar = someWS.BeginHelloWorld(null,null);

ar.AsyncWaitHandle.WaitOne();

MessageBox.Show(someWS.EndHelloWorld(ar));

}





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.