有个系统,我要生成一个文件,在Web上有给用户看的连接
然后用户更改后,我会重新生成这个文件
前后生成的文件名是一样的。
所以在第二次生成时就要判断这个文件是否正在被Web用户使用,如果正在使用,
生成新文件的进程就等待20秒,一直使用就连续等待10次就生成异常。
可是最近发现,文件很经常是被占用,所以经常出现异常,但是并没有Web用户下载。判断文件是否正在使用的方法是:
FileInfo fi = new FileInfo(fileName);
if (! fi.Exists)
{
return false;
} try 

FileStream fs= File.Open(fileName, FileMode.Append, FileAccess.Write, FileShare.None); 
fs.Close(); 
return false;

catch

return true;
}请问有没有什么更好的办法来判断?系统中还有什么服务会占用文件,来影响检测。
Index服务已经关闭。请大家都来支持下。

解决方案 »

  1.   

    你把fs.close()写到你的catch块中去
      

  2.   

    有时候执行一新WEB应用程序,这个应用程序下的文件就无法删除了.停掉IIS后就可以.估计楼主的问题和我遇到过的问题一样,是IIS在占用资源.但还没找到解决办法,也许会对楼主有启发.
      

  3.   

    你释放个鸟
    你把fs.close()写到你的catch块中去
      

  4.   


    try
    {}
    catch
    {}
    finally
    {}
    方式来写,把fs.close()放在finally块里面去,不管执行成功还是失败,都会执行finally块
      

  5.   

    下载个unlocker,查查看是谁占用了……一般来说在网站下的文件都可能被IIS所占用……
      

  6.   

    用完后save..接着kill 该进程
    关键看有没有程序在引用该文件