我想添加一些元素到C#字典,但我一直在遇到一些问题。我是C#开发新手,所以我希望有人能帮助我。“一个项目有相同的密钥已被添加”在字典
添加元素的代码是:
if (!connections.ContainsKey(port.getParentName()))
{
connections.Add(port.getParentName(), port.getLabel() + ";" + cable + ";" + cableTemplate + "|");
}
else
{
connections[port.getParentName()] += port.getLabel() + ";" + cable + ";" + cableTemplate + "|";
}
如果密钥媒体链接包含在我的口。虽然我检查字典我越来越:
“An item with the same key has already been added”
也提我正在异步获取数据,所以我猜想这是一个同步问题。我试图通过锁定的代码块来处理这个,但是这似乎并没有解决问题:
System.Object lockThis = new System.Object();
lock (lockThis)
{
....
}
另外不得不提的是,我没有得到这个错误所有的时间。只是偶尔在启动应用程序时。任何想法可能会造成这种情况?我是在做同步错误还是其他什么?
@ShellShock:我知道。你评论我的答案的旧版本。 – 2013-04-04 12:17:47
更多挑剔:lockObject应该具有与Dictionary相同的作用域和生命周期。 – 2013-04-04 12:20:23
非常感谢您的回答。什么是正确的锁定方式?我还需要这个代码的其他部分?谢谢! – zzirna 2013-04-04 12:42:53