Prism と MVVM パターンを使用しています
次のように、コンテナーに登録されているリポジトリでサービスを実行しています。
_container.RegisterType<ITheService, TheService>();
_container.RegisterType<IRepository<Order>, Repository>(new ContainerControlledLifetimeManager());
リポジトリのコンストラクターはサービスにサブスクライブし、新しい要素 (毎秒 5 ~ 10 など) を受け取ります。問題は、このサブスクリプションが原因で、GUI のウィンドウを閉じると、サービスを保持しているモジュールが閉じられず、破棄によってシャットダウンされるのではなく、サービスが実行され続けることです。
私がMVVMにいなかった場合、ウィンドウを閉じるときにサービスの登録を解除するだけですが、シェルウィンドウではそれができません。
私は2つの解決策を見ます *シェルが閉じたときにリポジトリに通知するイベントアグリゲータを持っており、サービスのサブスクライブを解除します(ただし、それが機能するかどうかはわかりません) *シェルからリポジトリを解決し(シングルトンとして登録されているため)、サブスクライブを解除しますサービスのとき、しかしそれは非常に醜いでしょう....