基于委托的异步编程模型是 .NET 早期版本中实现异步操作的一种方式,主要通过 BeginInvoke
和 EndInvoke
方法来实现。这种基于委托的异步模式已被 Task
和 async/await
模式取代,但在维护旧代码时仍可能遇到这种模式。
委托的方法中:Invoke用于同步调用; 而BeginInvoke与EndInvoke用于异步调用。
一、具体介绍:
1.1 异步调用BeginInvoke 方法:
调用格式是:BeginInvoke( 委托的参数,AsyncCallback类型的回调函数,一个object对象), 该回调函数是在委托完成后自动调用的函数。 object对象是任何一种对象,可以传递给委托函数。
特点如下:
a. 主线程调用此函数后,立即返回,不等待调用完成
b. 返回 IAsyncResult 用于监视调用状态. 在EnInvoke中使用该返回值
1.2 EndInvoke 方法:
用于获取异步调用的结果;调用此方法后,如果操作未完成,会阻塞调用线程直到完成。
而且:如果委托函数中有exception异常,是在调用EndInvoke时触发这个异常的。即即使委托执行中有异常,如果后面没有调用EndInvoke这个异常不