Skip to content
Switch branches/tags
Go to file
Latest commit d3f9efc Apr 16, 2020 History
3 contributors

Users who have contributed to this file

@AArnott @Evangelink @sharwell

Diagnostic Analyzers

The following are the diagnostic analyzers installed with the Microsoft.VisualStudio.Threading.Analyzers NuGet package.

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
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.


Some analyzers' behavior can be configured. See our configuration topic for more information.