C#异步编程
同步方法和异步方法的区别
同步方法: 调用在程序继续执行之前需要等待同步方法执行完毕返回结果
异步方法: 则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操
作
异步编程概览
允许您异步调用任何方法。定义与您需要调用的方法具有相同签名
的委托;公共语言运行库将自动为该委托定义具有适当签名的 BeginInvoke 和
EndInvoke 方法。
BeginInvoke 方法用于启动异步调用。它与您需要异步执行的方法具有相同的参数,
只不过还有两个额外的参数(将在稍后描述)。 立即返回,不等待异步调用
完成。
返回 IAsyncResult,可用于监视调用进度。
EndInvoke 方法用于检索异步调用结果。调用 后可随时调用
方法;如果异步调用未完成, 将一直阻塞到异步调用完成。 的参
数包括您需要异步执行的方法的 和 参数(在 中为
和 )以及由 返回的 ! 。
四种使用 和 进行异步调用的常用方法。调用了
后,可以:
"进行某些操作,然后调用 一直阻塞到调用完成。
#使用 ! !$% 获取 $%,使用它的 $ 方法
将执行一直阻塞到发出 $% 信号,然后调用 。这里主要是主程序等
待异步方法,等待异步方法的结果。
&轮询由 返回的 ! ,! '( 确定异步调
用何时完成,然后调用 。此处理个人认为与 # 相同。
)将用于回调方法的委托传递给 。该方法在异步调用完成后在 *+
线程上执行,它可以调用 。这是在强制装换回调函数里面
! !,- 方法的最后一个参数.成委托,然后用委托执行
。
警告 始终在异步调用完成后调用 。
以上有不理解的稍后可以再理解。
/
例子
")先来个简单的没有回调函数的异步方法例子
请再运行程序的时候,仔细看注释,对理解很有帮助。还有,若将注释的中的两个方法都
同步,你会发现异步运行的速度优越性。
/
/,0
/(/'!(("
1
/'"
1