Mengapa Saya Mendapat \'Jenis CollectionView ini tidak menyokong perubahan pada SourceCollection daripada utas yang berbeza daripada utas Dispatcher\'?

Mary-Kate Olsen
Lepaskan: 2024-11-01 21:45:30
asal
583 orang telah melayarinya

Why Am I Getting

Pengendalian Ralat: "Jenis CollectionView ini tidak menyokong perubahan pada SourceCollection daripada thread yang berbeza daripada thread Dispatcher"

Mesej ralat yang diberikan, "Jenis ini of CollectionView tidak menyokong perubahan pada SourceCollection daripada thread yang berbeza daripada Dispatcher thread," menunjukkan percubaan untuk mengubah suai ObservableCollection daripada thread bukan UI.

Seperti yang dijelaskan dalam kod yang disediakan, ViewModel's Load( ) kaedah mengisi _matchObsCollection ObservableCollection daripada senarai objek GetMatchDetailsDC. Walau bagaimanapun, kemas kini ini dilakukan di luar urutan UI.

Perkaitan Benang dan Penghantar

Dalam WPF, elemen UI, seperti DataGrid, dicipta pada utas UI dan mengekalkan pertalian benang. Sebarang pengubahsuaian kepada elemen ini mesti dilakukan daripada urutan UI untuk memastikan keselamatan rangkaian.

Menyelesaikan Ralat

Untuk menyelesaikan isu ini, anda boleh menggunakan App.Current.Dispatcher.Invoke(( Tindakan)delegasikan kaedah { ... }) untuk menggunakan kemas kini koleksi pada urutan UI:

<code class="csharp">matchList = proxy.GetMatch().ToList();

foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList)
{
    App.Current.Dispatcher.Invoke((Action)delegate  // <-- Here
    {
        _matchObsCollection.Add(match);
    });
}</code>
Salin selepas log masuk

Pemuatan Data Tak Segerak dalam WPF

Walaupun menggunakan kaedah tak segerak untuk pemuatan data adalah perkara biasa, adalah penting untuk mempertimbangkan keselamatan utas apabila memanipulasi elemen UI daripada utas bukan UI. Sentiasa pastikan bahawa sebarang kemas kini kepada elemen UI, seperti mengubah suai ObservableCollection, dilakukan pada urutan UI untuk mengelakkan ralat berkaitan urutan.

Atas ialah kandungan terperinci Mengapa Saya Mendapat \'Jenis CollectionView ini tidak menyokong perubahan pada SourceCollection daripada utas yang berbeza daripada utas Dispatcher\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!