使用委托可通过异步方式调用同步方法。 同步调用委托时,该方法 Invoke
直接在当前线程上调用目标方法。
BeginInvoke
如果调用该方法,公共语言运行时(CLR)会将请求排在队列中,并立即返回给调用方。 目标方法在线程池中的线程上异步调用。 提交请求的原始线程可以自由地继续与目标方法并行执行。 如果在对方法的调用 BeginInvoke
中指定了回调方法,则目标方法结束时将调用回调方法。 在回调方法中,EndInvoke
方法获取返回值以及任何输入/输出或仅输出参数。 如果在调用 BeginInvoke
时未指定回调方法, EndInvoke
可以从调用 BeginInvoke
的线程调用。
重要
编译器应根据用户指定的委托签名发出包含Invoke
、BeginInvoke
和EndInvoke
方法的委托类。
BeginInvoke
和 EndInvoke
方法应标记为本机方法。 由于这些方法被标记为本地,因此 CLR 会在类加载时自动提供实现。 加载程序可确保其不会被替代。
本节中
使用异步方式调用同步方法
讨论如何使用委托对普通方法进行异步调用,并提供简单的代码示例,这些示例演示了等待异步调用返回的四种方法。
相关部分
基于事件的异步模式 (EAP)
介绍 .NET 中的异步编程。