From 148775f6d887879c550361047e33a12965f55823 Mon Sep 17 00:00:00 2001 From: Abhitej John Date: Thu, 8 Jan 2026 16:55:05 -0800 Subject: [PATCH 1/3] Fix link to documentation in VSTHRD111.md Updated link in VSTHRD111.md to point to the correct documentation. --- docfx/analyzers/VSTHRD111.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docfx/analyzers/VSTHRD111.md b/docfx/analyzers/VSTHRD111.md index 0495e84f0..4420d1dcb 100644 --- a/docfx/analyzers/VSTHRD111.md +++ b/docfx/analyzers/VSTHRD111.md @@ -2,7 +2,7 @@ Some code bases, particularly libraries with no affinity to an app's UI thread, are advised to use `.ConfigureAwait(false)` for each and every _await_ because it can avoid deadlocks after those calls start on an application's UI thread and the app later decides to synchronously block the UI thread waiting for those tasks to finish. Using `.ConfigureAwait(false)` also allows continuations to switch to a background thread even when no synchronous blocking would cause a deadlock, which makes for a more responsive application and possibly higher throughput of async operations. -Note that this scenario can also be solved using the `JoinableTaskFactory`, but many class libraries may not wish to depend on the application proffers an instance of that type to the library. Where JoinableTaskFactory _does_ apply, use of `.ConfigureAwait(false)` is _not_ recommended. See [this topic](https://github.com/Microsoft/vs-threading/blob/main/doc/cookbook_vs.md#should-i-await-a-task-with-configureawaitfalse) for more on when `.ConfigureAwait(false)` and `.ConfigureAwait(true)` are appropriate. +Note that this scenario can also be solved using the `JoinableTaskFactory`, but many class libraries may not wish to depend on the application proffers an instance of that type to the library. Where JoinableTaskFactory _does_ apply, use of `.ConfigureAwait(false)` is _not_ recommended. See [this topic](https://github.com/Microsoft/vs-threading/blob/main/docfx/docs/cookbook_vs.md#should-i-await-a-task-with-configureawaitfalse) for more on when `.ConfigureAwait(false)` and `.ConfigureAwait(true)` are appropriate. **This analyzer's diagnostics are *hidden* by default**. You should enable the rule for libraries that use to require this await suffix. From dbcd6f138bfc882ebfd07f9479baa3cba06a3308 Mon Sep 17 00:00:00 2001 From: Andrew Arnott Date: Fri, 20 Feb 2026 11:37:20 -0700 Subject: [PATCH 2/3] Apply suggestion from @AArnott --- docfx/analyzers/VSTHRD111.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docfx/analyzers/VSTHRD111.md b/docfx/analyzers/VSTHRD111.md index 4420d1dcb..f2077a903 100644 --- a/docfx/analyzers/VSTHRD111.md +++ b/docfx/analyzers/VSTHRD111.md @@ -2,7 +2,7 @@ Some code bases, particularly libraries with no affinity to an app's UI thread, are advised to use `.ConfigureAwait(false)` for each and every _await_ because it can avoid deadlocks after those calls start on an application's UI thread and the app later decides to synchronously block the UI thread waiting for those tasks to finish. Using `.ConfigureAwait(false)` also allows continuations to switch to a background thread even when no synchronous blocking would cause a deadlock, which makes for a more responsive application and possibly higher throughput of async operations. -Note that this scenario can also be solved using the `JoinableTaskFactory`, but many class libraries may not wish to depend on the application proffers an instance of that type to the library. Where JoinableTaskFactory _does_ apply, use of `.ConfigureAwait(false)` is _not_ recommended. See [this topic](https://github.com/Microsoft/vs-threading/blob/main/docfx/docs/cookbook_vs.md#should-i-await-a-task-with-configureawaitfalse) for more on when `.ConfigureAwait(false)` and `.ConfigureAwait(true)` are appropriate. +Note that this scenario can also be solved using the `JoinableTaskFactory`, but many class libraries may not wish to depend on the application proffers an instance of that type to the library. Where JoinableTaskFactory _does_ apply, use of `.ConfigureAwait(false)` is _not_ recommended. See [this topic](https://microsoft.github.io/vs-threading/docs/cookbook_vs.html#should-i-await-a-task-with-configureawaitfalse) for more on when `.ConfigureAwait(false)` and `.ConfigureAwait(true)` are appropriate. **This analyzer's diagnostics are *hidden* by default**. You should enable the rule for libraries that use to require this await suffix. From 999e68ac73b3776051f6319b717bb59167d4ead8 Mon Sep 17 00:00:00 2001 From: Andrew Arnott Date: Fri, 20 Feb 2026 11:38:29 -0700 Subject: [PATCH 3/3] An even better link --- docfx/analyzers/VSTHRD111.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docfx/analyzers/VSTHRD111.md b/docfx/analyzers/VSTHRD111.md index f2077a903..aaa46ced5 100644 --- a/docfx/analyzers/VSTHRD111.md +++ b/docfx/analyzers/VSTHRD111.md @@ -2,7 +2,7 @@ Some code bases, particularly libraries with no affinity to an app's UI thread, are advised to use `.ConfigureAwait(false)` for each and every _await_ because it can avoid deadlocks after those calls start on an application's UI thread and the app later decides to synchronously block the UI thread waiting for those tasks to finish. Using `.ConfigureAwait(false)` also allows continuations to switch to a background thread even when no synchronous blocking would cause a deadlock, which makes for a more responsive application and possibly higher throughput of async operations. -Note that this scenario can also be solved using the `JoinableTaskFactory`, but many class libraries may not wish to depend on the application proffers an instance of that type to the library. Where JoinableTaskFactory _does_ apply, use of `.ConfigureAwait(false)` is _not_ recommended. See [this topic](https://microsoft.github.io/vs-threading/docs/cookbook_vs.html#should-i-await-a-task-with-configureawaitfalse) for more on when `.ConfigureAwait(false)` and `.ConfigureAwait(true)` are appropriate. +Note that this scenario can also be solved using the `JoinableTaskFactory`, but many class libraries may not wish to depend on the application proffers an instance of that type to the library. Where JoinableTaskFactory _does_ apply, use of `.ConfigureAwait(false)` is _not_ recommended. See [this topic](../docs/cookbook_vs.md#should-i-await-a-task-with-configureawaitfalse) for more on when `.ConfigureAwait(false)` and `.ConfigureAwait(true)` are appropriate. **This analyzer's diagnostics are *hidden* by default**. You should enable the rule for libraries that use to require this await suffix.