|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
据说很厉害,甚至可以把C#也干掉^_^,不过也很复杂,本来C++已经够复杂的。有人甚至还提出把这个东东引进标准,我觉得基本上不可能的。web|教程|异步 一般在WEB使用程序中不会思索到这个需求。做智能客户真个时分,当用到WebService时,因为服务器处置速率、收集传输速率等各类缘故原由会使一个WebService从哀求入手下手到取得呼应了局之间守候一段工夫,这时候候线程会处于堵塞形态,程序会守候哀求了局招致客户端没法举行其他的举措或处置。这时候候就必要异步的利用WebService。
最简单被想到的办法固然是创建一个新的线程来实行WebService的哀求并取得了局,如许就能够不影响程序的主线程的事情,而且也十分简单完成,可是在一个庞大的使用程序中,用户大概会同时哀求多个webservice,这时候候就得创立并把持多个线程。多线程的把持固然能够完成很好的使用程序,但难度是对照年夜的,并且很简单引发非常。
在.net的SDK中实践上就有关于异步伐用webservice的先容和示例。其次要的事情道理和流程以下:
办法1、
privatevoidbutton_Click_(objectsender,System.EventArgse)
{
//为一个Webservice的代办署理类创立一个实例
asy.asynchronismsomeWS=newasy.asynchronism();
//创立一个异步回调工具,机关函数的参数为回调的办法,该回调的办法必需包括一个异步操纵形态范例的参数
System.AsyncCallbackcb=newAsyncCallback(showmsg);
//入手下手举行异步通讯,一般界说一个IAsyncResult异步操纵形态范例的变量来吸收入手下手异步通讯办法所前往的通讯形态
//经由过程这个操纵形态的实例就能够把握以后通讯形态。
//如:System.IAsyncResultar=someWS.BeginHelloWorld(cb,someWS);
someWS.BeginHelloWorld(cb,someWS);
}
voidshowmsg(IAsyncResultar)//必需要有一个IAsyncResult范例的参数
{
//界说一个代办署理类的范例的变量吸收地点回调办法的参数的异步操纵信息
asy.asynchronismsomeWS=(asy.asynchronism)ar.AsyncState;
//该代办署理类实例挪用End</webmethod/>办法来取得WebService的了局
MessageBox.Show(someWS.EndHelloWorld(ar));
}
办法2、
privatevoidbutton_Click_(objectsender,System.EventArgse)
{
//为一个Webservice的代办署理类创立一个实例
asy.asynchronismsomeWS=newasy.asynchronism();
System.IAsyncResultar=someWS.BeginHelloWorld(null,null);
ar.AsyncWaitHandle.WaitOne();
MessageBox.Show(someWS.EndHelloWorld(ar));
}
办法一完成了哀求和吸收异步通讯,使用起来对照天真,事情的办法看起来也很像多线程的操纵体例。
办法二固然也完成了发送哀求和吸收了局异步通讯,可是用在实践的程序中并没有到达所必要的效果。
具体的先容请参看SDK中的形貌
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。 |
|