Skip to content

Async troubleshooting and pitfalls#52959

Merged
BillWagner merged 5 commits intodotnet:mainfrom
BillWagner:anchors-aweigh-3
Apr 13, 2026
Merged

Async troubleshooting and pitfalls#52959
BillWagner merged 5 commits intodotnet:mainfrom
BillWagner:anchors-aweigh-3

Conversation

@BillWagner
Copy link
Copy Markdown
Member

@BillWagner BillWagner commented Apr 9, 2026

Contributes to #17714

  1. Create common-async-bugs.md — from "Psychic Debugging of Async Methods." Covers the 4 most common bugs: method runs synchronously despite async, can't await void, deadlocks with SynchronizationContext, Task<Task> unwrapping. Also incorporate mentions of UI deadlocks (from "Await and UI and deadlocks") and static constructor deadlocks as warning notes.
  2. Create async-lambda-pitfalls.md — from "Potential pitfalls to avoid when passing around async lambdas." Covers: async lambdas assigned to Action delegates (becomes async void), Parallel.ForEach with async lambdas, Task.Factory.StartNew returning Task<Task>.
  3. Decompose relevant Async/Await FAQ content into both articles (FAQ answers about async void, Task.Wait vs await, the async keyword not forcing asynchrony).
  4. Add both to TOC. Consider grouping under a new "Best practices and troubleshooting" sub-section.

Internal previews

📄 File 🔗 Preview link
docs/navigate/advanced-programming/toc.yml docs/navigate/advanced-programming/toc
docs/standard/asynchronous-programming-patterns/async-lambda-pitfalls.md Async lambda pitfalls
docs/standard/asynchronous-programming-patterns/common-async-bugs.md Common async/await bugs

@dotnetrepoman dotnetrepoman bot added this to the April 2026 milestone Apr 9, 2026
@BillWagner BillWagner marked this pull request as ready for review April 13, 2026 16:55
@BillWagner BillWagner requested a review from a team as a code owner April 13, 2026 16:55
Copilot AI review requested due to automatic review settings April 13, 2026 16:55
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds two new async/await troubleshooting articles to the .NET async programming patterns documentation, with accompanying C# and Visual Basic snippet projects, and wires the new content into the Advanced .NET programming navigation TOC.

Changes:

  • Adds common-async-bugs.md covering common async/await failure modes and fixes.
  • Adds async-lambda-pitfalls.md covering common mistakes when passing async lambdas to synchronous delegate APIs.
  • Adds runnable C# and VB snippet projects for both articles, and links the new pages in the navigation TOC.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
docs/standard/asynchronous-programming-patterns/common-async-bugs.md New conceptual article about common async/await bugs and mitigations.
docs/standard/asynchronous-programming-patterns/async-lambda-pitfalls.md New conceptual article about async lambda pitfalls and correct patterns.
docs/navigate/advanced-programming/toc.yml Adds a “Best practices and troubleshooting” subgroup with links to the new articles.
docs/standard/asynchronous-programming-patterns/snippets/common-async-bugs/csharp/Program.cs C# snippet source for common async bug examples/fixes.
docs/standard/asynchronous-programming-patterns/snippets/common-async-bugs/csharp/CommonAsyncBugs.csproj C# snippet project for building/running the common-async-bugs snippets.
docs/standard/asynchronous-programming-patterns/snippets/common-async-bugs/vb/Program.vb VB snippet source for common async bug examples/fixes.
docs/standard/asynchronous-programming-patterns/snippets/common-async-bugs/vb/CommonAsyncBugs.vbproj VB snippet project for building/running the common-async-bugs snippets.
docs/standard/asynchronous-programming-patterns/snippets/async-lambda-pitfalls/csharp/Program.cs C# snippet source for async lambda pitfall examples/fixes.
docs/standard/asynchronous-programming-patterns/snippets/async-lambda-pitfalls/csharp/AsyncLambdaPitfalls.csproj C# snippet project for building/running the async-lambda-pitfalls snippets.
docs/standard/asynchronous-programming-patterns/snippets/async-lambda-pitfalls/vb/Program.vb VB snippet source for async lambda pitfall examples/fixes.
docs/standard/asynchronous-programming-patterns/snippets/async-lambda-pitfalls/vb/AsyncLambdaPitfalls.vbproj VB snippet project for building/running the async-lambda-pitfalls snippets.

BillWagner and others added 4 commits April 13, 2026 16:59
 Create `common-async-bugs.md` — from "Psychic Debugging of Async Methods." Covers the 4 most common bugs: method runs synchronously despite `async`, can't await `void`, deadlocks with `SynchronizationContext`, `Task<Task>` unwrapping. Also incorporate mentions of UI deadlocks (from "Await and UI and deadlocks") and static constructor deadlocks as warning notes.
1. Create `async-lambda-pitfalls.md` — from "Potential pitfalls to avoid when passing around async lambdas." Covers: async lambdas assigned to `Action` delegates (becomes async void), `Parallel.ForEach` with async lambdas, `Task.Factory.StartNew` returning `Task<Task>`.
1. Decompose relevant Async/Await FAQ content into both articles (FAQ answers about async void, `Task.Wait` vs `await`, the `async` keyword not forcing asynchrony).
1. Add both to TOC. Consider grouping under a new "Best practices and troubleshooting" sub-section.
Do a full edit pass and update.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…itfalls.md

Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
@BillWagner BillWagner enabled auto-merge (squash) April 13, 2026 21:30
@BillWagner BillWagner merged commit 5dae656 into dotnet:main Apr 13, 2026
9 checks passed
@BillWagner BillWagner deleted the anchors-aweigh-3 branch April 13, 2026 21:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants