5.看下面这个例子
using System;
using System.IO;
public class TestFileStream
...{
public static void Main(string[] args)
...{
//创建一个FileStream对象
FileStream fs = new FileStream(@"C: est.txt", FileMode.OpenOrCreate);
Console.WriteLine("您可以尝试在系统中删除c盘下的test.txt(回车键继续)");
//暂停程序执行﹐并尝试在系统中删除那个文件
Console.ReadLine();
/**//**//**//*进行垃圾收集*/
GC.Collect();
Console.WriteLine("再删一下试试");
Console.ReadLine();
}
}6.注意中间那行代码:
GC.Collect();
这是强制要.net垃圾收集器进行垃圾收集。
我们再去尝试删除test.txt﹐居然可以被删除了﹐为什么呀?(fs不是没有关闭那个SafeFileHandle吗?)﹐让我细细道来﹕
7.我们首先了解一下.net垃圾收集器进行垃圾收集的四种时机(参见﹕.net框架程序设计 李建忠译)
a.最常见的﹕当.net觉得合适时﹐例如它感到内存紧张了(朮语称为﹕0代对象充满)
b.微软强烈不建议使用的﹕GC的Col