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