簡體   English   中英

綁定到Dictionary並使用線程更新的DataGridView

[英]DataGridView bound to a Dictionary and updated with a thread

通過使用以下示例代碼,我有一個綁定到DataGridView的Dictionary。

綁定到字典的DataGridView

請首先查看上述問題

不同之處在於我正在從線程更新字典。 (另一個類的事件處理程序)。

我的事件處理程序如下

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM