Megosztás a következőn keresztül:


CA2008: Ne hozzon létre feladatokat TaskScheduler átadása nélkül

Tulajdonság Érték
Szabályazonosító CA2008
Cím Ne hozzon létre feladatokat TaskScheduler átadása nélkül
Kategória Megbízhatóság
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 9-ben Nem

Ok

A tevékenységlétrehozási vagy -folytatási művelet olyan metódust használ, amely nem ad meg paramétert TaskScheduler .

Szabály leírása

A következő .NET-feladatlétrehozási és -folytatási metódusok túlterheléssel rendelkeznek, amelyek lehetővé teszik egy példány megadását TaskScheduler vagy kihagyását:

Mindig adjon meg explicit TaskScheduler argumentumot az alapértelmezett Current érték elkerülése érdekében, amelynek viselkedését a hívó határozza meg, és futásidőben változhat. Current visszaadja az adott szálon jelenleg futó ütemezési Task kiszolgálót. Ha nincs ilyen feladat, az visszaadja Defaulta szálkészletet. A használat Current holtpontokhoz vagy felhasználói felületi válaszképességi problémákhoz vezethet bizonyos helyzetekben, amikor a feladatot a szálkészleten kívánták létrehozni, de ehelyett megvárja, amíg visszakerül a felhasználói felületi szálra.

További információkért és részletes példákért lásd: New TaskCreationOptions and TaskContinuationOptions in .NET-keretrendszer 4.5.

Feljegyzés

VSTHRD105 – Kerülje a TaskScheduler.Current metódus túlterhelését, amely a Microsoft.VisualStudio.Threading.Analyzers csomagban implementált hasonló szabály.

Szabálysértések kijavítása

A szabálysértések kijavításához hívja meg a metódus túlterhelését, amely a beadást TaskSchedulerDefault vagy a szándék egyértelművé tétele érdekében szükségesCurrent.

Mikor kell letiltani a figyelmeztetéseket?

Ez a figyelmeztetés elsősorban kódtárakra vonatkozik, ahol a kód tetszőleges környezetekben végrehajtható, és ahol a kódnak nem szabad feltételezéseket tennie a környezetről, illetve arról, hogy a metódus hívója hogyan invokált vagy várakozhat rá. Előfordulhat, hogy a kódtárkód helyett alkalmazáskódot képviselő projektekre vonatkozó figyelmeztetést célszerű mellőzni.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA2008
// The code that's violating the rule is on this line.
#pragma warning restore CA2008

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA2008.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Lásd még