我怎样才能观看user.config文件并重新加载设置时,它的变化?
-
22-08-2019 - |
题
我在那里我遇到我的WPF应用程序的多个实例的情况。我想实例共享相同的user.config文件。目前,无论实例写入user.config文件的最后胜利。我宁愿所有实例看user.config文件并重新加载设置每当另一个实例更改它。目前user.config文件位于此处:
C:\ Documents和Settings \ 用户名 \本地设置\应用数据\ 公司名称 \ EXENAME .exe_StrongName_ 散列 \ 1.0.0.0
例如,C:\ Documents和Settings \ USENAME \本地设置\应用数据\公司\ 5kAdCon.exe_StrongName_gxh0g12uyafipnfrslaggvy4vvk01fko \ 1.0.0.0
有我得到这个全路径(包括散列),所以我可以添加一个文件观察者的user.config文件的方式?
如果是这样,我想重新加载设置文件发生更改时。它是那么容易,因为调用此方法?
Properties.Settings.Default.Reload();
解决方案
我发现它。下面的代码将路径返回user.config文件。您需要添加到System.Configuration.dll参考
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
string path = config.FilePath;
现在我可以使用 FileSystemWatcher的得到通知时,文件的变化。
其他提示
您应该缓存中的文件,因此,如果有任何变化的文件被在缓存重新加载的文件进行实施的CacheDependency。我用我的应用程序,它被存储在缓存中,如果文件被更改重新加载许可xml文件。下面的代码:
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument permissionsDoc = null;
if (Cache["Permissions"] == null)
{
string path = Server.MapPath("~/XML/Permissions.xml");
permissionsDoc = new XmlDocument();
permissionsDoc.Load(Server.MapPath("~/XML/Permissions.xml"));
Cache.Add("Permissions", permissionsDoc,
new CacheDependency(Server.MapPath("~/XML/Permissions.xml")),
Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration,
CacheItemPriority.Default, new CacheItemRemovedCallback(ReloadPermissionsCallBack));
}
else
{
permissionsDoc = (XmlDocument)Cache["Permissions"];
}
}
private void ReloadPermissionsCallBack(string key, object value, CacheItemRemovedReason reason)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/XML/Permissions.xml"));
Cache.Insert("Permissions", doc ,
new CacheDependency(Server.MapPath("~/XML/Permissions.xml")),
Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration,
CacheItemPriority.Default, new CacheItemRemovedCallback(ReloadPermissionsCallBack));
}
缓存也将提高应用程序的性能。
可以使用FileSystemWatcher的控制?
它具有修饰的事件可以触发
不隶属于 StackOverflow