Skip to content

Latest commit

 

History

History
38 lines (30 loc) · 1.13 KB

VSSDK005.md

File metadata and controls

38 lines (30 loc) · 1.13 KB

VSSDK005 Use the JoinableTaskContext singleton

Code running within the Visual Studio process (and primary AppDomain) should avoid creating a new instance of JoinableTaskContext, as doing so may introduce deadlocks. Instead, everyone should share the JoinableTaskContext instance offered by ThreadHelper.JoinableTaskContext.

This analyzer may be turned off for unit test projects, which may have a legitimate need to create a JoinableTaskContext.

Examples of patterns that are flagged by this analyzer

class MyCoolPackage : Package
{
    void Foo()
    {
        var jtc = new JoinableTaskContext(); // this line flagged
    }
}

Solution

Use the JoinableTaskContext available from the ThreadHelper class.

class MyCoolPackage : Package
{
    void Foo()
    {
        var jtc = ThreadHelper.JoinableTaskContext;
    }
}