[英]DataGridView bound to a Dictionary and updated with a thread
通過使用以下示例代碼,我有一個綁定到DataGridView的Dictionary。
請首先查看上述問題
不同之處在於我正在從線程更新字典。 (另一個類的事件處理程序)。
我的事件處理程序如下
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_PriceChanged()
成為成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.