C# DataGridView绑定到字典并使用线程更新
我使用以下示例代码将字典绑定到DataGridView 请先看上面的问题 不同之处在于,我正在从一个线程更新字典。(另一个类的事件处理程序) 我的事件处理程序如下所示C# DataGridView绑定到字典并使用线程更新,c#,dictionary,data-structures,C#,Dictionary,Data Structures,我使用以下示例代码将字典绑定到DataGridView 请先看上面的问题 不同之处在于,我正在从一个线程更新字典。(另一个类的事件处理程序) 我的事件处理程序如下所示 static void f_PriceChanged(Objet f, eventData e) { if (prices.ContainsKey(e.ItemText)) prices[e.ItemText] = e.price; else prices.Add(e.ItemT
static void f_PriceChanged(Objet f, eventData e)
{
if (prices.ContainsKey(e.ItemText))
prices[e.ItemText] = e.price;
else
prices.Add(e.ItemText, e.price);
}
更不用说价格被宣布为班级水平
我已经修改了按钮代码从原来的职位作为
Button btn = new Button();
btn.Dock = DockStyle.Bottom;
btn.Click += delegate
{
bl.Reset();
};
form.Controls.Add(btn);
在内部,字典会按预期更新,但网格不会更新。单击按钮生成异常
收集被修改;枚举操作可能无法执行
怎么办?您必须使用lock语句来保护您的共享资源:字典
private object _lock = new object();
private void Reset()
{
lock(_lock)
{
// your code here
}
}
void f_PriceChanged(Objet f, eventData e)
{
lock(_lock)
{
if (prices.ContainsKey(e.ItemText))
prices[e.ItemText] = e.price;
else
prices.Add(e.ItemText, e.price);
}
}
您必须使f\u PriceChanged()
成为成员