如何结束这个过程

本文关键字:过程 结束 何结束 | 更新日期: 2023-09-27 18:08:10

本部分

if (File.Exists(filePath)) {
      string status = new StreamReader(File.OpenRead(filePath)).ReadLine();
      if (status != "SUCCEEDED") {
           File.Delete(filePath);
           createDb();
      } 
}

程序给出一个异常,消息为

进程无法访问文件''STATUS.txt',因为它正在被删除由其他进程使用。

如何解决这个问题?

如何结束这个过程

像这样修改代码:

if (File.Exists(filePath)) 
{
    string status;
    using(var streamReader = new StreamReader(filePath))
    {
        status = streamReader.ReadLine();
    }
    if (status != "SUCCEEDED")
    {
        File.Delete(filePath);
        createDb();
    }
}

您应该在删除文件之前关闭流试试这个

if (File.Exists(filePath))
        {
            string status= string.Empty;
            using (var stream = new StreamReader(File.OpenRead(filePath)))
            {
                status = stream.ReadLine();
            }
            if (status != "SUCCEEDED")
            {
                File.Delete(filePath);
                createDb();
            }
        }

使用using模式:

if (File.Exists(filePath)) {
    using(var stream = new StreamReader(File.OpenRead(filePath)))
    {
      var status = stream.ReadLine();
      if (status != "SUCCEEDED")
      {
        File.Delete(filePath);
        createDb();
      } 
    }
 }

然后如果其他人正在使用该文件,您可以像下面这样打开流:

 new FileStream(fi.FullName, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite))

然后传递给StreamReader构造函数。

删除文件或写入using块前,请先关闭文件。

if (File.Exists(filePath))
{
    string status= string.Empty;
    using (var stream = new StreamReader(File.OpenRead(filePath)))
    {
        status = stream.ReadLine();
    }
    if (status != "SUCCEEDED")
    {
        File.Delete(filePath);
        createDb();
    }
}