Freigeben über


CA2022: Ungenaue Lesevorgänge mit Stream.Read vermeiden

Eigenschaft Wert
Regel-ID CA2022
Titel Vermeidung ungenauer Leseoperationen mit Stream.Read
Kategorie Zuverlässigkeit
Fix führt zu Unterbrechungen oder bleibt funktionsfähig Untrennbar
Standardmäßig in .NET 10 aktiviert Als Warnung
Anwendbare Sprachen C# und Visual Basic

Ursache

Ein Aufruf an Stream.Read oder Stream.ReadAsync wird durchgeführt, und der Rückgabewert wird nicht überprüft.

Regelbeschreibung

Stream.Read und Stream.ReadAsync gibt möglicherweise weniger Bytes als angefordert zurück, was zu unzuverlässigem Code führt, wenn der Rückgabewert nicht überprüft wird.

So beheben Sie Verstöße

Um einen Verstoß zu beheben, überprüfen Sie entweder den Rückgabewert (die Gesamtanzahl der in den Puffer gelesenen Bytes), oder rufen Sie stattdessen auf Stream.ReadExactlyStream.ReadExactlyAsync .

Beispiel

Der folgende Codeausschnitt zeigt einen Verstoß gegen CA2022 und den Fix für die Verletzung.

void M1(Stream stream, byte[] buffer)
{
    // CA2022 violation.
    stream.Read(buffer, 0, buffer.Length);

    // Fix for the violation.
    stream.ReadExactly(buffer);
}
Shared Sub M(stream As Stream, buffer As Byte())
    ' CA2022 violation.
    stream.Read(buffer, 0, buffer.Length)

    ' Fix for the violation.
    stream.ReadExactly(buffer)
End Sub

Wann sollten Warnungen unterdrückt werden?

Sie sollten Warnungen aus dieser Regel nicht unterdrücken, da Ihre App möglicherweise hängen bleibt, wenn Sie die Verstöße nicht beheben.

Siehe auch