WPF の非ディスパッチャー スレッドから ObservableCollection を変更する方法
Oct 31, 2024 pm 08:06 PM「このタイプの CollectionView は、ディスパッチャー スレッドとは異なるスレッドからの SourceCollection への変更をサポートしていません。」
問題の説明
DataGrid バインド非同期的に設定された ObservableCollection に対して、非 Dispatcher スレッドからの SourceCollection への変更が許可されていないことを示すエラーがスローされます。
解決策
問題は、スレッドのアフィニティから発生します。 ObservableCollection は最初に UI スレッド上に作成されるため、UI スレッドからのみアクセス可能になります。別のスレッドから変更するには、デリゲートを UI ディスパッチャーに配置する必要があります。
更新された ViewModel コード
<code class="csharp">public void Load() { matchList = new List<GetMatchDetailsDC>(); matchList = proxy.GetMatch().ToList(); foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList) { App.Current.Dispatcher.Invoke((Action)delegate { _matchObsCollection.Add(match); }); } }</code>
ログイン後にコピー
UI ディスパッチャーでデリゲートを呼び出すことにより、ObservableCollection に追加されます。は UI スレッドでスケジュールされ、例外を解決します。
強化されたバインディングと更新
DataGrid の非同期バインディングと更新については、ViewModel プロパティで INotifyPropertyChanged を使用し、Dispatcher を呼び出して、 UI 要素。
以上がWPF の非ディスパッチャー スレッドから ObservableCollection を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
2つのポイント博物館:すべての展示とそれらを見つける場所
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
2つのポイント博物館:すべての展示とそれらを見つける場所
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7126
9


Java チュートリアル
1534
14


Laravel チュートリアル
1256
25


PHP チュートリアル
1205
29


CakePHP チュートリアル
1153
46



C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?
