gpt4 book ai didi

c# - C#字典索引在带锁的数组范围之外

转载 作者:行者123 更新时间:2023-12-03 12:59:52 25 4
gpt4 key购买 nike

我有以下代码:

lock (dict)
{
dict.Add(someKey, someValue);
Task task = new Task (() => doSomething);
task.Start();
task.ContinueWith(() => {dict.Remove(someKey);});
}

由于我已经锁定了字典,为什么我仍然会收到错误

"Index was outside the bounds of the array"



我无法重现该错误,但另一个人做了。

最佳答案

dict.Remove(someKey);不在锁内运行。它在不同的线程上运行。此代码未正确同步。

可能您需要的是lock (dick) dict.Remove(someKey);。然后,该词典将正确运行。但是,AddRemove将不是一个原子操作。

关于c# - C#字典索引在带锁的数组范围之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36646760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com