Diagnostic Analyzers
The following are the diagnostic analyzers installed with the Microsoft.VisualStudio.Threading.Analyzers
NuGet package.
Learn more about how to install and configure these analyzers.
| ID |
Title |
Severity |
Supports |
Default diagnostic severity |
| VSTHRD001 |
Avoid legacy thread switching methods |
Critical |
1st rule |
🔡 Warning |
| VSTHRD002 |
Avoid problematic synchronous waits |
Critical |
2nd rule |
Warning |
| VSTHRD003 |
Avoid awaiting foreign Tasks |
Critical |
3rd rule |
Warning |
| VSTHRD004 |
Await SwitchToMainThreadAsync |
Critical |
1st rule |
Error |
| VSTHRD010 |
Invoke single-threaded types on Main thread |
Critical |
1st rule |
Warning |
| VSTHRD011 |
Use AsyncLazy<T> |
Critical |
3rd rule |
Error |
| VSTHRD012 |
Provide JoinableTaskFactory where allowed |
Critical |
All rules |
Warning |
| VSTHRD100 |
Avoid async void methods |
Advisory |
|
Warning |
| VSTHRD101 |
Avoid unsupported async delegates |
Advisory |
VSTHRD100 |
Warning |
| VSTHRD102 |
Implement internal logic asynchronously |
Advisory |
2nd rule |
Info |
| VSTHRD103 |
Call async methods when in an async method |
Advisory |
|
Warning |
| VSTHRD104 |
Offer async option |
Advisory |
|
Info |
| VSTHRD105 |
Avoid method overloads that assume TaskScheduler.Current |
Advisory |
|
Warning |
| VSTHRD106 |
Use InvokeAsync to raise async events |
Advisory |
|
Warning |
| VSTHRD107 |
Await Task within using expression |
Advisory |
|
Error |
| VSTHRD108 |
Assert thread affinity unconditionally |
Advisory |
1st rule, VSTHRD010 |
Warning |
| VSTHRD109 |
Switch instead of assert in async methods |
Advisory |
1st rule |
Error |
| VSTHRD110 |
Observe result of async calls |
Advisory |
|
Warning |
| VSTHRD111 |
Use .ConfigureAwait(bool) |
Advisory |
|
Hidden |
| VSTHRD112 |
Implement System.IAsyncDisposable |
Advisory |
|
Info |
| VSTHRD113 |
Check for System.IAsyncDisposable |
Advisory |
|
Info |
| VSTHRD114 |
Avoid returning null from a Task-returning method. |
Advisory |
|
Warning |
| VSTHRD115 |
Avoid creating a JoinableTaskContext with an explicit null SynchronizationContext |
Advisory |
|
Warning |
| VSTHRD200 |
Use Async naming convention |
Guideline |
VSTHRD103 |
Warning |
Severity descriptions
| Severity |
IDs |
Analyzer catches... |
| Critical |
1-99 |
Code issues that often result in deadlocks |
| Advisory |
100-199 |
Code that may perform differently than intended or lead to occasional deadlocks |
| Guideline |
200-299 |
Code that deviates from best practices and may limit the benefits of other analyzers |
Default diagnostic severity legend
| Icon |
Meaning |
| 🔡 |
The analyzer only produces diagnostics when configured. |
Configuration
Some analyzers' behavior can be configured. See our configuration topic for more information.