你能解释一下这个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();

其中mCommandMapDictionary<string, ManualResetEvent>pId是始终从GUID.NewGuid().ToString()创建的字符串

现在我在抛出KeyNotFoundException的行的调试器中。调试器告诉我字典中有一个项目,它有一个键与我要求的键完全相同。去图。

这种情况也偶尔发生。并非总是如此。

问题是,WTF?

你能解释一下这个System.Collections.Generic.KeyNotFoundException吗?

我猜你在多个线程中操作command,它的pId最终会发生变化。

或者,您可以在多个线程中操作mCommandMap而不锁定。

尝试在代码周围添加lock()

相关文章: