CA1844: Az aszinkron metódusok memóriaalapú felülbírálásának biztosítása a Stream alosztályozása során
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1844 |
Cím | Az aszinkron metódusok memóriaalapú felülbírálásának biztosítása a Stream alosztályozása során |
Kategória | Teljesítmény |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Javaslatként |
Ok
Felülbírálásokból Stream származtatott, de nem felülbíráló ReadAsync(Byte[], Int32, Int32, CancellationToken)ReadAsync(Memory<Byte>, CancellationToken)típus. Vagy a felülbírálásokból Stream származtatott, de nem felülbíráló WriteAsync(Byte[], Int32, Int32, CancellationToken)WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)típus.
Szabály leírása
A memóriaalapú ReadAsync
és WriteAsync
metódusok a teljesítmény javítása érdekében lettek hozzáadva, amelyeket több módon is végrehajtanak:
ValueTask
Visszatérnek, ésValueTask<int>
helyettükTask
ésTask<int>
helyettük.- Lehetővé teszik bármilyen típusú puffer átadását anélkül, hogy további másolatot kellene készítenie egy tömbre.
Ezeknek a teljesítménybeli előnyöknek a megvalósítása érdekében az abból Stream származó típusoknak saját memóriaalapú implementációt kell biztosítaniuk. Ellenkező esetben az alapértelmezett implementációnak egy tömbbe kell másolnia a memóriát, hogy meghívja a tömbalapú implementációt, ami alacsonyabb teljesítményt eredményez. Ha a hívó egy Memory<T> tömb által nem támogatott példányon vagy ReadOnlyMemory<T> példányon halad át, a teljesítményre nagyobb hatással van.
Szabálysértések kijavítása
A szabálysértések megoldásának legegyszerűbb módja a tömbalapú implementáció memóriaalapú implementációként történő újraírása, majd a tömbalapú metódusok implementálása a memóriaalapú metódusok szempontjából.
Mikor kell letiltani a figyelmeztetéseket?
Az alábbi helyzetek bármelyike esetén nyugodtan letilthatja a szabály figyelmeztetését:
- A teljesítménybeli találat nem jelent problémát.
- Tudja, hogy az
Stream
alosztály csak tömbalapú metódusokat fog használni. - Az
Stream
alosztály olyan függőségekkel rendelkezik, amelyek nem támogatják a memóriaalapú puffereket.
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 CA1844
// The code that's violating the rule is on this line.
#pragma warning restore CA1844
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.CA1844.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Kapcsolódó információk
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: