Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eigenschaft | Wert |
---|---|
Regel-ID | CA2022 |
Titel | Vermeiden von ungenauen Lesevorgängen mit Stream.Read |
Kategorie | Zuverlässigkeit |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 9 aktiviert | Als Warnung |
Ursache
Ein Aufruf Stream.Read an oder Stream.ReadAsync wird ausgefü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ässigen Code führt, wenn der Rückgabewert nicht aktiviert ist.
Behandeln von Verstößen
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.