WPF 中 ObservableCollection 的執行緒安全修改
在 WPF 中使用 ObservableCollection
時,維護線程安全至關重要。在沒有適當同步的情況下嘗試從工作執行緒修改 ObservableCollection
會導致例外狀況。
要從工作執行緒修改 ObservableCollection
,必須在 UI 執行緒上使用 BindingOperations.EnableCollectionSynchronization
方法。此方法執行以下步驟:
CollectionChanged
事件的調度程序,確保它們在 UI 執行緒上處理。 正確處理執行緒安全集合的步驟:
lock
語句還是自訂同步機制。 EnableCollectionSynchronization
的適當重載。 使用 lock 語句的範例:
<code class="language-csharp">public class ViewModel { private readonly ObservableCollection<Item> _items; public ViewModel() { _items = new ObservableCollection<Item>(); BindingOperations.EnableCollectionSynchronization(_items, new object()); } public void UpdateCollection() { var worker = new Thread(() => { lock (_items) { _items.Add(new Item()); } }); worker.Start(); } }</code>
透過實作這些步驟,您可以安全地從工作執行緒更新 ObservableCollection
,而不會影響資料完整性。
以上是如何確保WPF中觀測值的線程安全修改?的詳細內容。更多資訊請關注PHP中文網其他相關文章!