如何处理文件异常:无法访问该文件,因为它正由另一个进程使用

时间:2016-10-27 19:14:25

标签: c# exception streamwriter

如何处理此异常。我有一个文本文件。此代码每3秒重写一次文件。同时,另一个MS Excel文件从文件中读取数据。有时我得到这个例外。

有没有办法让StreamWriter等到MS Excel完成读取文件并在此之后开始重写文件?

string path = @"C:\My Path\my_file.txt";

 using (StreamWriter fs = new StreamWriter(File.OpenWrite(path)))
  {
    fs.Write(text);
    fs.Close();
  }

1 个答案:

答案 0 :(得分:-1)

这是一种方式:

string path = @"C:\My Path\my_file.txt";
string text = "Declare text variable so this code compiles";
FileStream fileS = null;
bool done = false;
while (!done)
{
    done = true;

    try
    {
        fileS = File.OpenWrite(path);
    }
    catch (IOException ex)
    {
        done = false;
    }
}

using (StreamWriter fs = new StreamWriter(fileS))
{
    fs.Write(text);
    fs.Close();
};

我还会在StopWatch电话中添加以上while循环超时,经过这么长时间,可能还有一小Thread.Sleep()所以你不要全速旋转而基本上是试图获得FileStream锁。