我爱Aspx >> VB.Net >> VB.NET中使用代表对方法异步调用VB.NET中使用代表对方法异步调用
常规的思维方式,计算机应该是干完一件事,然后再干下一件。用术语来说,这种执行任务的方式叫做同步执行(Synchronous Execution)。既然这样,那么为什么要引入异步执行的概念呢?
目录
为什么要使用异步调用
实现异步调用的步骤和机理
为什么要使用异步调用(Asynchronous Method Execution)
按照我们常规的思维方式,计算机应该是干完一件事,然后再干下一件。用术语来说,这种执行任务的方式叫做同步执行(Synchronous Execution)。既然这样,那么为什么要引入异步执行的概念呢?原因很简单,因为同步执行在有些情况下效果不理想,不能完成我们预期的目的。举两个简单的例子来说明一下这个问题。
a. 一个客户端程序(Client Side Program)要从后台数据库取回一个复杂的数据集合。可能这个数据库操作本身很费时,也可能是网络传输的数度比较慢,总之这个方法调用可能要花20秒时间。如果使用同步调用,那么在数据库结果返回之前,用户必须耐心等待,什么也不能做。这时候你可能会希望这个调用慢慢的在别处进行,程序马上返回好让你做其它的工作。等什么时候数据返回了,在进行其随后相应的操作。这种情形下,你就需要对数据库操作的方法进行异步调用。
b.一个网上机票查询订阅程序。当客户要查询从北京到芝加哥的所有机票的时候,这个程序可能要在后台通过Web Service对美国西北航空公司,中国国际航空公司和东方航空公司进行访问。将这些公司的机票情况汇总后一起以HTML的形式返回给用户。如果是同步调用,那么需要一个接一个进行Web Service调用。如果每个调用花费10秒钟的话,那么整个过程就要30秒钟。如果你使用异步调用,那么你可以在同几乎一时间就对三个公司发出相应的请求,10秒后当结果从三个不同的网站返回来后,你就可以汇总并返回各用户了。这样,整个过程只需要10秒左右。
看到这里你可能会说,这个问题没什么新鲜的。我在C++,Java里都可以用线程(Thread)来达到这样的效果。的确,大多数的高级语言都允许你创建新的线程来手工实现这样的调用。但是这些手工操作比较复杂,程序员需要自己控制线程的创建,销毁,协调等等许多细节工作,容易产生错误。并且在大型的服务器端的程序中,手工控制线程有时性能不够优化,不能根据当前具体服务器的处理器情况来动态的和智能的优化线程的数量。基于这个原因,.NET创建了一种相对简单的异步方法调用机制,使这一问题变得更加简单。这就是今天要谈的使用代表(Delegates)对方法进行异步调用。(本文以VB.NET来进行示范,C#的异步调用和此类似,就不再给出例程了)
【我对这篇文章有话说?】
.NET平台下Web树形结构程序设计[05-20]
Visual Basic.NET带来的新方法(一..[05-20]
Visual Basic.NET带来的新方法(二..[05-20]
Visual Basic.NET 中的语言新变化[05-20]
介绍VB.NET的线程(英文)[05-20]
一步一步安装VB.Net(图片较多,..[05-20]
走近VB.Net(一),VB中的族,类,..[05-20]
VB.Net中文教程(1) 类别与封装性[05-20]
VB.Net中文教程(2) Composite样式[05-20]
VB.Net中文教程(3) 继承与封装性[05-20]
.NET平台下Web树形结构程序设计[05-20]
Visual Basic.NET带来的新方法(一..[05-20]
Visual Basic.NET带来的新方法(二..[05-20]
Visual Basic.NET 中的语言新变化[05-20]
介绍VB.NET的线程(英文)[05-20]
一步一步安装VB.Net(图片较多,..[05-20]
走近VB.Net(一),VB中的族,类,..[05-20]
VB.Net中文教程(1) 类别与封装性[05-20]
VB.Net中文教程(2) Composite样式[05-20]
VB.Net中文教程(3) 继承与封装性[05-20]