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 | 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.