我正在使用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()不会.