我有一本字典声明如下

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,以确保正确同步。

10-05 20:59