你能解释一下这个System.Collections.Generic.KeyNotFoundException吗?
本文关键字:Collections System Generic KeyNotFoundException 能解释 一下 | 更新日期: 2023-09-27 17:48:55
我有以下代码:
mCommandMap[command.pId] = new System.Threading.ManualResetEvent(false);
SendCommandASync(command);
mCommandMap[command.pId].WaitOne();
其中mCommandMap
是Dictionary<string, ManualResetEvent>
,pId
是始终从GUID.NewGuid().ToString()
创建的字符串
现在我在抛出KeyNotFoundException的行的调试器中。调试器告诉我字典中有一个项目,它有一个键与我要求的键完全相同。去图。
这种情况也偶尔发生。并非总是如此。
问题是,WTF?
我猜你在多个线程中操作command
,它的pId
最终会发生变化。
或者,您可以在多个线程中操作mCommandMap
而不锁定。
尝试在代码周围添加lock()
。