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

时间:2013-06-25 10:38:44

标签: c# .net file-io filestream

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

using (var strm = File.OpenWrite(Destination)) {
    while(someCondition) {
        bfr = GetBuffer();

        strm.Write(bfr.Data, 0, ChunkSizeInBytes);
        strm.Flush();

        ShowProgress();
    }
}

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

(请注意,Flush()之后我Write()

为什么以及如何克服它?

1 个答案:

答案 0 :(得分:4)

我的评论是正确的。

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

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