我有一个web.config文件,我想解析它以防它发生变化。为此,我使用FileSystemWatcher和IDictionary集合。这是我的方法的代码:
public void ReadCurrentConfiguration()
{
var settings = System.Configuration.ConfigurationManager.AppSettings;
lock (_dictMonitor)
{
if (_dictionary.Count != 0)
_dictionary.Clear();
foreach (var elem in Enum.GetValues(typeof(ConfigurationParameter)).Cast<ConfigurationParameter>())
_dictionary.Add(elem.ToString(), settings[elem.ToString()]);
}
}
_ dictMonitor是Object,用于锁定;ConfigurationParameter是枚举,用于定义键名。当引发FileSystemWatcher更改事件时调用此方法。问题是程序执行在 _ dictionary.Clear();上停止。或锁定(dictMonitor);没有例外。调试时,手动调用我的方法ReadCurrentConfiguration执行良好 - 它正常清理字典并填充新值。但在事件引发的情况下,它会停止。此外,如果将执行传递给clear()方法,调试器将显示以下消息而不是 _字典值:_字典计数 = 无法评估表达式,因为代码已优化或本机框架位于调用堆栈顶部。谁能建议为什么会出现这个问题?