我有一本字典声明如下
IDictionary<string, object> _objectIds = new Dictionary<string, object>();
我遇到了一些问题,它发现该实例由于ContainsKey方法而返回false,并且从监视窗口中确定该项目在那里。
所以我创建了辅助方法
private bool IdsContainsKey(string key)
{
lock (syncObject)
{
lock (_objectIds)
{
if (_objectIds.ContainsKey(key))
return true; // A
if (_objectIds.ContainsKey(key))
return true; // B
return _objectIds.ContainsKey(key); // C
}
}
}
在调试会话期间,我遇到了一种情况,该方法在B位置退出,有时我使C返回true。
有谁能够帮助我?
谢谢。
最佳答案
您需要确保在使用lock
的每个位置周围放置一个_objectIds
,以确保正确同步。