我正在使用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(),看起来这就是干扰点(文件关闭)。
(请注意,每次Flush()后我Write()
为什么以及如何克服它?

最佳答案

我的评论是正确的。
请看汉斯·帕桑的回答:https://stackoverflow.com/a/4921728/1517578
Flush(true)将立即刷新到磁盘。Flush()不会。

09-10 17:13