为什么FileStream.Close()挂起很长时间

本文关键字:挂起 长时间 FileStream Close 为什么 | 更新日期: 2023-09-27 18:19:51

我正在使用FileStream(0.1-100 GB):创建一个非常大的文件

using (var strm = File.OpenWrite(Destination)) {
    while(someCondition) {
        bfr = GetBuffer();
        strm.Write(bfr.Data, 0, ChunkSizeInBytes);
        strm.Flush();
        ShowProgress();
    }
}

当我到达using语句的末尾时,线程将挂起很长一段时间。我在循环之后放了一个strm.Close(),看起来这就是干扰点(文件关闭)。

(请注意,每次Write()后我会Flush()

为什么会出现这种情况以及如何克服这种情况?

为什么FileStream.Close()挂起很长时间

我的评论是正确的。

请参阅Hans Passant的回答:https://stackoverflow.com/a/4921728/1517578

Flush(true)将立即刷新到磁盘。Flush()不会。