• 在默认情况下,一个 async 方法在被 await 调用后恢复运行时,会在原来的上下文中运行。
    • 如果是 UI 上下文,并且有大量的 async 方法在 UI 上下文中恢复,就会引起性能上的问题。
    • 为了避免在上下文中恢复运行,可调用 ConfigureAwait 方法,将其参数continueOnCapturedContext 设为 false来解决:
    1. async Task ResumeOnContextAsync()
    2. {
    3. await Task.Delay(TimeSpan.FromSeconds(1));
    4. // 这个方法在同一个上下文中恢复运行。
    5. }
    6. async Task ResumeWithoutContextAsync()
    7. {
    8. await Task.Delay(TimeSpan.FromSeconds(1)).ConfigureAwait(false);
    9. // 这个方法在恢复运行时,会丢弃上下文。
    10. }