评论解决:
应用程序崩溃是由另一个问题引起的
我正在从 2 个不同的应用程序读取/写入文件,当文件被读取或写入时,它将始终被应用程序 A 或 B 锁定,并且它们都使用FileShare.None
.
我的问题是,即使将阅读器包装在 try/catch 周围,它仍然会在 using 行使用 IOException 使应用程序崩溃(写入器不会发生)。
我也做了catch (IOException ...
一些我认为除了让它更具可读性之外没有什么区别的问题。
当文件被锁定并继续尝试直到文件可用时,忽略的正确方法是什么?
while (true)
{
try
{
using (FileStream stream = new FileStream("test_file.dat", FileMode.Open, FileAccess.Read, FileShare.None))
{
using (TextReader reader = new StreamReader(stream))
{
// bla bla bla does not matter
}
}
}
catch
{
// bla bla bla does not matter again
}
Thread.Sleep(500);
}
写
private bool WriteData(string data)
{
try
{
using (FileStream stream = new FileStream("test_file.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
{
stream.SetLength(0);
using (TextWriter writer = new StreamWriter(stream))
{
writer.Write(data);
}
}
return true;
}
catch
{
return false;
}
}
FileShare.None
请注意,当文件被用于读取或写入的任何进程时,我不会向任何人授予共享权限(作者和读者使用),所以基本上我正在处理异常,直到文件可用但无法正常工作。