我尝试了在强制回收后休眠线程一段时间再去向下执行,依然没有效果,似乎并没有执行fs的析构函数,或者GC还是认为fs可达 另外还有一个细节,上面的代码Release编译出来的exe,直接双击执行,是可以直接通过测试的。
[quote=引用 7 楼 lulianqi 的回复:] [quote=引用 5 楼 sp1234 的回复:] 磁盘操作系统处理这些操作本身有缓存和延迟。你要是换一个比较快的 SSD 硬盘试试,就会发现执行通过了。
[quote=引用 5 楼 sp1234 的回复:] 磁盘操作系统处理这些操作本身有缓存和延迟。你要是换一个比较快的 SSD 硬盘试试,就会发现执行通过了。
磁盘操作系统处理这些操作本身有缓存和延迟。你要是换一个比较快的 SSD 硬盘试试,就会发现执行通过了。
两个问题: 1、用垃圾回收来关闭本地资源的编程逻辑不是好的做法。正确的方法是要用Dispose模式。 2、如果你在做实验,那么你对GC.Collect的理解有误。它是启动一个垃圾回收,并不是完成一个垃圾回收,因此你要加: GC.Collect(2, GCCollectionMode.Forced); GC.WaitForPendingFinalizers(); // 等待FileStream等的Finalier完成。
GC.Collect(2, GCCollectionMode.Forced); GC.WaitForPendingFinalizers(); // 等待FileStream等的Finalier完成。
111,096
社区成员
642,554
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧