Task.WaitAll()和Task.WhenAll()区别

Task.WaitAll()和Task.WhenAll()区别:
1、WaitAll

  • 同步方法,会阻塞当前线程
  • 在 UI 线程使用可能导致死锁
  • 抛出 AggregateException
  • 适用于控制台或后台工作线程

2、WhenAll

  • 异步方法,不会阻塞当前线程
  • 返回 Task,可以使用 await
  • 直接抛出第一个遇到的异常
  • 适用于 async/await 模式
  • 推荐在 UI 应用程序中使用

3、使用建议:

  • 在异步方法中始终使用 WhenAll
  • 在需要同步等待且确定不会造成死锁的场景下使用 WaitAll
  • 在 UI 应用程序中避免使用 WaitAll
  • 需要处理多个异常时,使用 WhenAll 并检查任务的 Exception 属性
posted @ 2024-12-24 15:40  苏秦与真相  阅读(8)  评论(0编辑  收藏  举报