私は、コレクションの変更を理想的なシナリオObservableCollection<T>
から UI スレッドに通知する拡張の過程にあります。これを実現するために、UIをいくつか解決し、最終的にカスタムの監視可能な型内で解決されたインスタンスを使用することを考えています。ViewModel
MVVM
Dispatcher
IOC
Dispatcher
ドラフトは次のようになります。
class SafeObservableCollection<T>: ObservableCollection<T>
{
public SafeObservableCollection(IDispatcher currentDispatcher)//maybe an instance of Dispatcher
{
//assign resolved dispatcher to a private member
}
}
前提: (a) 1 つの Dispatcher/UIThread を使用する WPF アプリケーション。(b) ObservableCollection の基本クラス メンバーをオーバーライドする以外に、逸脱 (BackgroundWorker を使用する APM/EPM) は考えていません。
質問: 概説されたコードに従いながら Dispatcher インスタンスを解決するためのより良い方法を提案できますか? 考えられる設計上の欠陥を突き止めるのを手伝ってもらえますか? メモリリーク、デッドロック、または私が見落としていたものなど。このアプローチを使用することにした場合、Dispatcher インスタンスの有効期間はどうあるべきか、どうなるでしょうか。