Mengemas kini ObservableCollection dari Benang Latar Belakang: A .NET 4.5 Pendekatan
Cabaran: Keselamatan Thread dengan ObservableCollection
secara langsung mengubahsuai
dari thread pekerja dalam aplikasi WPF melemparkan pengecualian. Ini adalah akibat daripada model threading WPF, yang direka untuk mengekalkan respons UI semasa tugas latar belakang. ObservableCollection
Penyelesaian .NET 4.5:
BindingOperations.EnableCollectionSynchronization
.NET 4.5 Memperkenalkan penyelesaian yang diselaraskan:
. Dipanggil dari benang UI, kaedah ini: BindingOperations.EnableCollectionSynchronization
memastikan bahawa peristiwa - marshaled kembali ke benang UI.
CollectionChanged
alat mengunci untuk mencegah keadaan perlumbaan semasa mengendalikan peristiwa ini pada benang UI. -
Pertimbangan penting untuk keselamatan benang
Walaupun
dengan ketara meningkatkan keselamatan benang, pemaju masih harus mematuhi amalan terbaik: EnableCollectionSynchronization
- mengunci konsisten: Mengekalkan penguncian yang konsisten apabila mengubahsuai , menggunakan mekanisme yang sama yang diluluskan kepada
ObservableCollection
. EnableCollectionSynchronization
- Mekanisme penguncian yang sesuai: Pilih mekanisme penguncian yang paling sesuai - pernyataan yang mudah sering cukup, tetapi penyegerakan tersuai mungkin diperlukan dalam senario kompleks.
lock
- Lulus konteks penyegerakan: betul lulus objek kunci atau panggilan balik penyegerakan ke adalah penting untuk fungsi yang betul. Kegagalan berbuat demikian boleh membawa kepada tingkah laku yang tidak dijangka.
EnableCollectionSynchronization
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini ObservableCollection dengan Selamat daripada Benang Latar Belakang dalam .NET 4.5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!