根据以下帖子中发布的解决方案,我创建了表单来读取日志文件
BackgroundWorker & Timer,只读取日志文件的新行?
但是,file in use
在编写日志条目时出现异常。
帮助
您需要确保您的日志读取代码以ReadWrite模式打开文件。有关完整解释,请参阅其他帖子的出色答案:如何使用 .net StreamReader 打开已打开的文件?
当我进行此类文件访问/操作时,我通常会处理两件事。
首先,为了阅读,我使用以下代码(请参阅FileShare enumeration):
using (Stream s = File.Open(path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite)) { ... }
其次,我通常会编写一个 while 循环来打开文件以进行读取/写入,如下所示(草稿代码):
int tries=0;
while (tries < 10) {
try {
// try to open file for your operation
break;
} catch (IOException) {
tries++;
Thread.Sleep(200);
}
}
编辑:不小心我在回答中第一次使用了 FileShare.Read 而不是更合适的 FileShare.ReadWrite。现在我已经纠正了。