文件级锁定 Properties.Settings
File level locking Properties.Settings
我是 C# 的新手,想保存一些设置。我的应用程序必须能够 运行 多个实例,因此有可能多个同时写入 user.config
文件。导致配置文件损坏。所以我想知道在保存的时候有没有文件级别的锁定。
试图查看 .Save
的源代码,这似乎归结为接口调用 IInternalConfigHost.OpenStreamForWriting
。但它是一个接口,所以我不能轻易地自己回答这个问题。
稍微更新了措辞。
基本上我想知道 user.config 文件是否会因为我的应用程序的多个实例同时写入而损坏。
您可以使用互斥锁对象。
它防止在多线程和多进程之间同时访问共享对象。
参考下一页。
http://derpturkey.com/c-cross-process-synchronization/
如果您的程序的两个或多个实例尝试写入同一个配置文件,您将在调用 .Save
时遇到异常
您可以使用 Mutex Class to synchronize access from multiple instances. You can check this answer 了解正确操作方法。
但是,您需要考虑的一件事是:如果您的一个实例更新了配置文件,是否应该通知其他实例并重新加载它以提供一致的行为?
我是 C# 的新手,想保存一些设置。我的应用程序必须能够 运行 多个实例,因此有可能多个同时写入 user.config
文件。导致配置文件损坏。所以我想知道在保存的时候有没有文件级别的锁定。
试图查看 .Save
的源代码,这似乎归结为接口调用 IInternalConfigHost.OpenStreamForWriting
。但它是一个接口,所以我不能轻易地自己回答这个问题。
稍微更新了措辞。
基本上我想知道 user.config 文件是否会因为我的应用程序的多个实例同时写入而损坏。
您可以使用互斥锁对象。 它防止在多线程和多进程之间同时访问共享对象。
参考下一页。 http://derpturkey.com/c-cross-process-synchronization/
如果您的程序的两个或多个实例尝试写入同一个配置文件,您将在调用 .Save
您可以使用 Mutex Class to synchronize access from multiple instances. You can check this answer 了解正确操作方法。
但是,您需要考虑的一件事是:如果您的一个实例更新了配置文件,是否应该通知其他实例并重新加载它以提供一致的行为?