根据以下帖子中发布的解决方案,我创建了用于读取日志文件的表单
BackgroundWorker & Timer, reading only new lines of a log file?
但是在编写日志条目时我遇到file in use
异常。
帮助
答案 0 :(得分:1)
您需要确保日志阅读代码以ReadWrite模式打开文件。有关完整说明,请参阅此其他帖子的优秀答案:How do I open an already opened file with a .net StreamReader?
答案 1 :(得分:1)
当我进行这样的文件访问/操作时,我通常会处理两件事。
首先,为了阅读,我使用以下代码(参见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。现在我已经纠正了它。