【问题标题】:File level locking Properties.Settings文件级锁定 Properties.Settings
【发布时间】:2016-04-04 10:18:34
【问题描述】:

我是 C# 的新手,想保存一些设置。我的应用程序必须能够运行多个实例,因此有可能同时对user.config 文件进行多次写入。导致配置文件损坏。因此我想知道保存时是否有任何文件级锁定。

试图查看.Save 的源代码,这似乎归结为接口调用IInternalConfigHost.OpenStreamForWriting。但它是一个界面,所以我不能轻易回答这个问题。

稍微更新了措辞。

基本上我想知道 user.config 文件是否会由于我的应用程序的多个实例同时写入多次而损坏。

【问题讨论】:

  • 不确定我的问题是否正确...从一个文件读取多个实例完全没有问题,但一次只能有一个实例具有写入权限。
  • 哦,对不起,你几乎回答了我的问题。认为多个程序可以同时具有写访问权限。

标签: c# .net c#-4.0 properties.settings


【解决方案1】:

如果您的程序的两个或多个实例尝试写入同一个配置文件,您将在调用.Save时遇到异常

您可以使用Mutex Class 同步来自多个实例的访问。您可以查看this answer,了解如何正确操作。

但是,您需要考虑的一件事是:如果您的一个实例更新了配置文件,是否应该通知其他实例并重新加载它以提供一致的行为?

【讨论】:

  • 这是答案,因为它解决了文件写入问题。至于通知更新。是的,我需要这样做。然而,这是一个不同的话题。
【解决方案2】:

您可以使用互斥锁对象。 它可以防止在多线程和多进程之间同时访问共享对象。

参考下一页。 http://derpturkey.com/c-cross-process-synchronization/

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 2011-02-22
    • 2012-08-09
    • 2021-03-29
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    相关资源
    最近更新 更多