Async troubleshooting and pitfalls#52959
Merged
BillWagner merged 5 commits intodotnet:mainfrom Apr 13, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
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.mdcovering common async/await failure modes and fixes. - Adds
async-lambda-pitfalls.mdcovering 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. |
docs/standard/asynchronous-programming-patterns/common-async-bugs.md
Outdated
Show resolved
Hide resolved
docs/standard/asynchronous-programming-patterns/snippets/common-async-bugs/csharp/Program.cs
Outdated
Show resolved
Hide resolved
docs/standard/asynchronous-programming-patterns/snippets/common-async-bugs/csharp/Program.cs
Show resolved
Hide resolved
docs/standard/asynchronous-programming-patterns/snippets/common-async-bugs/vb/Program.vb
Outdated
Show resolved
Hide resolved
docs/standard/asynchronous-programming-patterns/snippets/common-async-bugs/vb/Program.vb
Show resolved
Hide resolved
.../standard/asynchronous-programming-patterns/snippets/async-lambda-pitfalls/csharp/Program.cs
Outdated
Show resolved
Hide resolved
docs/standard/asynchronous-programming-patterns/async-lambda-pitfalls.md
Outdated
Show resolved
Hide resolved
docs/standard/asynchronous-programming-patterns/async-lambda-pitfalls.md
Show resolved
Hide resolved
docs/standard/asynchronous-programming-patterns/common-async-bugs.md
Outdated
Show resolved
Hide resolved
docs/standard/asynchronous-programming-patterns/snippets/async-lambda-pitfalls/vb/Program.vb
Outdated
Show resolved
Hide resolved
gewarren
approved these changes
Apr 13, 2026
docs/standard/asynchronous-programming-patterns/async-lambda-pitfalls.md
Outdated
Show resolved
Hide resolved
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>
0f1fc4e to
830ebcf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contributes to #17714
common-async-bugs.md— from "Psychic Debugging of Async Methods." Covers the 4 most common bugs: method runs synchronously despiteasync, can't awaitvoid, deadlocks withSynchronizationContext,Task<Task>unwrapping. Also incorporate mentions of UI deadlocks (from "Await and UI and deadlocks") and static constructor deadlocks as warning notes.async-lambda-pitfalls.md— from "Potential pitfalls to avoid when passing around async lambdas." Covers: async lambdas assigned toActiondelegates (becomes async void),Parallel.ForEachwith async lambdas,Task.Factory.StartNewreturningTask<Task>.Task.Waitvsawait, theasynckeyword not forcing asynchrony).Internal previews