1

我需要使用在多个实例中运行的相同代码附加到文本文件。在 try 块中,我打开文件,写入一条记录并关闭。

        lfilExceptionLogFileStream = new FileStream(istrExceptionInfoFullFileName, FileMode.Append, FileAccess.Write, FileShare.Write);
        lfilExceptionLog = new StreamWriter(lfilExceptionLogFileStream);

如果有问题,我会在 catch 块中暂停 1 秒System.Threading.Thread.Sleep(1000);并调用相同的函数。我重试了 99 次。

FileShare.Write我同时测试 3 次时 - 数据丢失。FileShare.None- 长时间锁定文件

我已经尝试了很多。如果有一种简单的方法可以找到文件是否被锁定,我可以等到它被锁定。我试过使用锁定对象 - 没有运气

欣赏是否有人可以提供可行的解决方案。

拉维

4

1 回答 1

0

我认为最简单的解决方案是:

  1. 一开始就创建 StreamWriter
  2. 创建同步版本 StreamWriter.Synchronized(lfilExceptionLog)
  3. 将同步实例传递给所有线程并使用它来记录内容。
  4. 完成后关闭 StreamWriter。
于 2013-10-10T03:08:32.103 回答