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

我正在使用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(),看起来这就是干扰点(文件关闭).

(请注意每次写()后我刷新()

它为什么以及如何克服它?

解决方法:

我的评论是正确的.

请参阅Hans Passant的答案:https://*.com/a/4921728/1517578

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

上一篇:CAD从二制流数据中加载图形(com接口)


下一篇:c# – 在MS Excel中打开文件时无法写入文件