nbsp; { 8 //创建一个FileStream对象 9 FileStream fs = new FileStream(@"C:\test.txt",FileMode.OpenOrCreate); 10 Console.WriteLine("您可以尝试在系统中删除c盘下的test.txt(回车键继续)"); 11 //暂停程序执行﹐并尝试在系统中删除那个文件 12 Console.ReadLine(); 13 14 //删除文件测试 15 try 16 { 17 File.Delete(@"c:\test.txt"); 18 } 19 catch (IOException ex) 20 { 21 Console.WriteLine("[Error]程序删除文件失败﹕{0}",ex.Message); 22 } 23 } 24}
3.在程序挂起时(Console.ReadLine等待输入)﹐删除文件会失败﹐很容易理解﹐因为文件打开后没有将其关闭﹐系统不知道这个文件是否还有用﹐所以帮我们保护这个文件(理所当然﹐那个非托管资源所使用的内存还被程序占用着)
4.但是在程序执行完后﹐我们再尝试删除文件﹐成功﹗为什么?(fs不是没有关闭那个SafeFileHandle吗?) 当然您可以说﹐windows操作系统在一个进程结束后会自动回收其资源﹐没错(但是如果是com就惨了﹐因为com是存在于自己的独立进程内﹐而操作系统不负责这个:( )﹐不过这里不是因为windows操作系统的功能﹐而是.net垃圾收集器帮的忙。
5.看下面这个例子
1using System; 2using System.IO; 3 4public class TestFileStream 5{ 6 public static void Main(string[] args) 7 { 8   上一页 [1] [2] [3] [4] [5] 下一页 |