Pengubahsuaian selamat benang bagi ObservableCollection dalam WPF
Apabila menggunakan ObservableCollection
dalam WPF, mengekalkan keselamatan benang adalah penting. Cuba untuk mengubah suai ObservableCollection
daripada urutan pekerja tanpa penyegerakan yang betul akan menghasilkan pengecualian.
Untuk mengubah suai ObservableCollection
daripada urutan pekerja, anda mesti menggunakan kaedah pada urutan UI BindingOperations.EnableCollectionSynchronization
. Kaedah ini melakukan langkah berikut:
CollectionChanged
, memastikan ia dikendalikan pada urutan UI. Langkah untuk mengendalikan koleksi selamat benang dengan betul:
lock
tradisional atau mekanisme penyegerakan tersuai. EnableCollectionSynchronization
berdasarkan mekanisme penguncian yang dipilih. Contoh penggunaan pernyataan kunci:
<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>
Dengan melaksanakan langkah-langkah ini, anda boleh mengemas kini ObservableCollection
dengan selamat daripada urutan pekerja tanpa menjejaskan integriti data.
Atas ialah kandungan terperinci Bagaimana untuk memastikan pengubahsuaian benang yang selamat dari ObservableCollections dalam WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!