使用委托进行异步编程

使用委托可通过异步方式调用同步方法。 如果同步调用委托,Invoke 方法将在当前线程上直接调用目标方法。 如果调用 BeginInvoke 方法,公共语言运行时 (CLR) 将对请求进行排队并立即返回给调用方。 目标方法将在线程池中的某个线程上异步调用。 提交请求的原始线程可以不受限制地继续与目标方法并行执行。 如果已在对 BeginInvoke 方法的调用中指定回叫方法,则目标方法结束时,将调用回叫方法。 在回叫方法中,EndInvoke 方法将获取返回值和所有输入/输出或仅输出参数。 如果调用 BeginInvoke 时未指定回叫方法,则可能从调用 BeginInvoke 的线程上调用 EndInvoke

重要

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

本节内容

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

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

另请参阅