Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
- System.Threading.Tasks.TaskFactory.StartNew Módszerek
- System.Threading.Tasks.Task.ContinueWith Módszerek
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.