我正在使用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/1517578Flush(true)
将立即刷新到磁盘。Flush()
不会。