【问题标题】:How to ensure thread safety when i have two processes that use the same file?当我有两个使用同一个文件的进程时如何确保线程安全?
【发布时间】:2017-06-02 12:56:18
【问题描述】:

我有两个不同的进程共享同一个文件,第一个是 Reader,第二个是 writer。我在 c# 中使用 StreamWriter 和 StreamReader,但我有一个异常“进程无法访问文件‘文件名’,因为它正被另一个进程使用”。 我怎样才能实现线程安全?

【问题讨论】:

  • 锁定资源
  • 你的情况不需要线程安全,应该有进程间同步。
  • 当您创建StreamReader 时,请确保您使用的构造函数接受FileAccess 参数并传递FileAccess.Read。这应该允许读者在作者写作的同时阅读。

标签: c# multithreading


【解决方案1】:

这与线程安全无关,而是进程间同步。使用进程间锁(称为命名Mutex

【讨论】:

    【解决方案2】:

    我找到了解决方案,对于我使用的作家:

      using (StreamWriter sw = new StreamWriter(Path))
                    {
                       //WorkTodo
                    }
    

    对于读者来说

    using (StreamReader sr = new StreamReader(Path))
                    {
                        //WorkTodo
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多