使用委托进行异步编程

使用委托可通过异步方式调用同步方法。 同步调用委托时,该方法 Invoke 直接在当前线程上调用目标方法。 BeginInvoke如果调用该方法,公共语言运行时(CLR)会将请求排在队列中,并立即返回给调用方。 目标方法在线程池中的线程上异步调用。 提交请求的原始线程可以自由地继续与目标方法并行执行。 如果在对方法的调用 BeginInvoke 中指定了回调方法,则目标方法结束时将调用回调方法。 在回调方法中,EndInvoke 方法获取返回值以及任何输入/输出或仅输出参数。 如果在调用 BeginInvoke时未指定回调方法, EndInvoke 可以从调用 BeginInvoke的线程调用。

重要

编译器应根据用户指定的委托签名发出包含InvokeBeginInvokeEndInvoke方法的委托类。 BeginInvokeEndInvoke 方法应标记为本机方法。 由于这些方法被标记为本地,因此 CLR 会在类加载时自动提供实现。 加载程序可确保其不会被替代。

本节中

使用异步方式调用同步方法
讨论如何使用委托对普通方法进行异步调用,并提供简单的代码示例,这些示例演示了等待异步调用返回的四种方法。

基于事件的异步模式 (EAP)
介绍 .NET 中的异步编程。

另请参阅