共用方式為


CA2022:避免使用 Stream.Read 不發生讀取

屬性
規則識別碼 CA2022
職稱 避免使用 Stream.Read 發生不精確的讀取
類別 可靠性
修正程式是中斷或非中斷 不中斷
預設在 .NET 9 中啟用 作為警告

原因

呼叫 或 Stream.ReadAsync 已進行Stream.Read,且不會檢查傳回值。

檔案描述

Stream.ReadStream.ReadAsync 可能會傳回比要求的位元組少,如果未檢查傳回值,則會產生不可靠的程序代碼。

如何修正違規

若要修正違規,請檢查傳回值(這是讀取至緩衝區的位元組總數),或改為呼叫 Stream.ReadExactlyStream.ReadExactlyAsync

範例

下列代碼段顯示 CA2022 的違規,以及違規的修正。

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

隱藏警告的時機

如果您未修正違規,您不應該隱藏此規則的警告,因為您的應用程式可能會停止回應。

另請參閱