Async Delegate (异步委托)
委托实例执行操作默认同步执行,但委托实例同样可以异步执行操作。
-
使用
BeginInvoke()
进行异步回调BeginInvoke()
除了接收原有委托签名的参数之外,参数表尾部额外带有两个参数,分别为AsyncCallback
委托类型和object
类型:AsyncCallback
委托在回调委托运行结束之后触发,AsyncCallback
委托接收一个IAsyncResult
类型的参数。object
类型用于传递一些参数给AsyncCallback
委托。
BeginInvoke()
的最后两个参数可以为null
。
BeginInvoke()
返回IAsyncResult
类型:- 使用
IAsyncResult.IsCompleted
属性可以判断回调委托的执行状态。 - 使用
IAsyncResult.AsyncState
属性获取BeginInvoke()
参数表中的最后一个object
类型的传入参数。
-
使用
EndInvoke()
等待异步委托返回若需等待异步执行的委托结束,可以使用
EndInvoke()
成员函数。EndInvoke()
接受一个IAs