C#面试题更新 2026-08-05

在 C# 中,异步委托是什么概念,以及它的典型使用方式包含哪些关键步骤?

技术原理C#

考察说明

考查对 C# 异步委托概念及基本调用模式的理解。

回答思路

  1. 【回答框架 1】异步委托是基于 BeginInvoke 和 EndInvoke 的异步调用模型,允许在后台线程执行方法。.NET 中委托类型自动提供 BeginInvoke 和 EndInvoke 方法,分别启动异步调用和获取结果,本质是异步编程模型(APM)的一部分。
  2. 【回答框架 2】典型用法分为三步:定义委托类型,指向方法;调用 BeginInvoke 传入参数和回调(可选),返回 IAsyncResult 句柄;通过 EndInvoke 获取返回值或处理异常,可在回调或主线程中调用。
  3. 【回答框架 3】常用模式包括:回调模式,在 BeginInvoke 中指定 AsyncCallback 委托,完成后执行回调,回调内调用 EndInvoke;等待句柄模式,利用 IAsyncResult.AsyncWaitHandle 等待完成;轮询模式,检查 IsCompleted 属性。
  4. 【回答框架 4】注意线程安全与并发,异步委托在 .NET Core 中已不被推荐,应使用 Task 或 async/await 取代,后者更简洁且支持取消和异常传播。
  5. 【关键点 1】异步委托基于 BeginInvoke 和 EndInvoke 方法。
  6. 【关键点 2】使用回调模式时需在回调内调用 EndInvoke 以获取结果并处理异常。
  7. 【关键点 3】在 .NET Core 及以后,优先使用 Task 或 async/await 而非异步委托。
  8. 【易错点 1】忽略调用 EndInvoke 可能导致资源泄漏和异常未被捕获。
  9. 【易错点 2】异步委托不保证线程安全,访问共享状态需要同步机制。
  10. 【易错点 3】回调中未调用 EndInvoke 会触发未观察到的异常,可能影响进程。