2009-08-19 79 views
0

當我將BindingList<ProcessDataItem>綁定到ComboBox時,會拋出InvalidOperationException,說明枚舉的集合已更改。 ProcessDataItem的實例在其相應的測量值發生更改時會永久收到更新。該類實現INotifyPropertyChanged以通知其容器這些更改。這似乎導致了這個問題。 我很驚訝有這個問題,因爲集合保持不變。什麼都不添加或刪除。只有值會改變。我怎樣才能解決這個問題?異步更新的類的數據綁定問題

編輯: 的BindingList.ListChanged事件的文檔說:

時出現在列表中的更改列表或項目。

這似乎導致我的問題。我將不得不創建一個自己的容器類來阻止枚舉正在進行時的值更改事件嗎?

+1

另一個需要擔心的問題是這些更改事件可能來自後臺線程,但被GUI控件佔用,並且只能在GUI線程上與GUI控件交互。因此,引發GUI使用的事件的任何對象只能在GUI線程上修改。 – 2009-08-19 08:30:00

回答

0

我終於必須解決ProcessDataItem類中的同步問題,而不是在容器級別上。現在,從GUI線程調用BindingList.ListChanged事件。 KeeperOfTheSoul對他的評論絕對正確。