gpt4 book ai didi

c# - 当多个进程正在使用它时如何写入一个txt文件? C#

转载 作者:太空狗 更新时间:2023-10-29 21:27:51 27 4
gpt4 key购买 nike

我有一个尝试写入日志文件的记录器。问题似乎是当有多个进程访问同一个日志文件时,记录器无法写入日志文件并给出“另一个进程正在使用该文件...”的错误,导致关键信息丢失。我尝试过使用锁,但它似乎不起作用,因为它们是独立的进程(我认为这就是它们不起作用的原因)。有没有办法让多个进程访问文件而不丢失信息?如果没有,还有其他选择吗?谢谢。

最佳答案

您的选项无特定顺序:

  1. 让不同的进程写入不同的日志文件。如果需要,让这些进程在某个时间点(例如午夜)滚动文件,并让另一个进程获取昨天的日志并将它们合并在一起。
  2. 如果您拥有/控制您的记录器基础设施并且必须写入同一个日志文件,请考虑使用 named mutex .命名互斥锁是系统互斥锁,可以跨进程边界共享。 code example at the link准确显示了如何在进程之间共享相同的互斥量。
    • 正如 Florian F 在评论中所建议的那样,使用可以执行此操作的 log4net(以不止一种方式,包括使用命名互斥锁)。他们的FAQ rightly states如果你那样做,那里会有性能问题。
  3. 有多种方法可以共享文件的读取和共享写入,然后能够锁定文件的某些区域。您可以让多个进程尝试同步谁写入文件的哪些区域,相应地锁定等等。但要做到这一点非常痛苦,强烈建议不要这样做。
  4. 使用系统日志服务器。
  5. 使用 log4net 的远程日志记录功能。

关于c# - 当多个进程正在使用它时如何写入一个txt文件? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175578/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com