2011-07-21 6 views
2

私はバインドされたコントロールのディスパッチャ以外のスレッドでNotifyPropertyChangedをスロープロパティを更新した場合は、更新が強制的にこのディスパッチャに整列化されましたか?あなたはそれを明示的にマーシャルInvokeを使用する必要はありませんので、WPF NotifyPropertyChangedsがディスパッチャにマーシャリングされていますか?

BackgrounWorker.Run() => { blah.Blahness = 2; // notifies property changed on BW, is this marshalled to the dispatcher? } 

答えて

7

はい、PropertyChangedイベントは自動的に、UIディスパッチャに整列化されています。それはスカラー特性(すなわちPropertyChangedイベント)に変更通知のためにのみ真である

注意。コレクションの変更通知(INotifyCollectionChanged.CollectionChangedイベント)そのように動作していない、彼らは手動でUIスレッド上で提起されなければなりません。私はそれを自動的に行うクラスを書いた、あなたはそれを見つけることができるhere

+1

返信トーマスいただきありがとうございます。私は実際にパフォーマンスの観点からもっと考えていました。すなわち、あなたの答えに基づいて、私はあなたがディスパッチャにプロパティの変更の大規模なコレクションを整列化手動ではなく、それは誰にとっても暗黙的に行われている場合は、より良いもパフォーマンスになるだろうことを前提としています。 – brianstewey

関連する問題