-5

根据以下帖子中发布的解决方案,我创建了表单来读取日志文件

BackgroundWorker & Timer,只读取日志文件的新行?

但是,file in use在编写日志条目时出现异常。

帮助

4

2 回答 2

1

您需要确保您的日志读取代码以ReadWrite模式打开文件。有关完整解释,请参阅其他帖子的出色答案:如何使用 .net StreamReader 打开已打开的文件?

于 2013-06-19T12:47:55.850 回答
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。现在我已经纠正了。

于 2013-06-19T12:49:14.757 回答