使用委托进行异步编程

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

重要说明重要事项

编译器应使用由用户指定的委托签名发出具有 Invoke、BeginInvoke 和 EndInvoke 方法的委托类。应将 BeginInvoke 和 EndInvoke 方法修饰为本机方法。因为这些方法被标记为本机的,所以 CLR 在类加载时自动提供该实现。加载程序确保它们未被重写。

本节内容

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

  • 异步委托编程示例
    通过一个更加复杂的代码示例(求解数字的因数)演示如何使用委托进行异步调用。

相关章节

请参见

参考

Delegate