BufferedStream.Flush 方法

定义

清除此流的所有缓冲区,并导致任何缓冲数据写入基础设备。

public:
 override void Flush();
public override void Flush();
override this.Flush : unit -> unit
Public Overrides Sub Flush ()

例外

流已释放。

数据源或存储库未打开。

示例

该代码示例是 BufferedStream 类中的一个较大示例的一部分。

// Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.");
startTime = DateTime.Now;
for(int i = 0; i < numberOfLoops; i++)
{
    bufStream.Write(dataToSend, 0, dataToSend.Length);
}
bufStream.Flush();
bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes sent in {1} seconds.\n",
    numberOfLoops * dataToSend.Length,
    bufferedTime.ToString("F1"));
// Send the data using the BufferedStream.
printfn "Sending data using BufferedStream."
let startTime = DateTime.Now
for _ = 0 to numberOfLoops - 1 do
    bufStream.Write(dataToSend, 0, dataToSend.Length)
bufStream.Flush()
let bufferedTime = (DateTime.Now - startTime).TotalSeconds
printfn $"{numberOfLoops * dataToSend.Length} bytes sent in {bufferedTime:F1} seconds.\n"
' Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.")
startTime = DateTime.Now
For i As Integer = 1 To numberOfLoops
    bufStream.Write(dataToSend, 0, dataToSend.Length)
Next i

bufStream.Flush()
bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes sent In {1} seconds." & vbCrLf, _
    numberOfLoops * dataToSend.Length, _
    bufferedTime.ToString("F1"))

注解

除非显式调用 FlushClose调用流,否则刷新流不会刷新其基础编码器。

如果使用 BufferedStream 构造函数,因此在创建 BufferedStream 对象时指定缓冲区大小,则在内容达到缓冲区大小时会刷新。 例如,缓冲区大小达到 5 个字节时,例如 BufferedStream bs = new BufferedStream(bs, 5) 将刷新内容的代码。

自动维护缓冲区的所有读取和写入方法 BufferedStream ,因此在读取和写入之间来回切换时无需调用 Flush

适用于

另请参阅