プリズムのイベントの集計-加入者始
-
05-07-2019 - |
質問
私は作業を実施するイベントの凝集のです。いくつかのモジュールしたいのは大きいと考えているイベントに言うが求められます。いった普通の例では両方の加入および出版社に殻をむきます。な問題があります。今;動かし、契約者に私のモジュールをなくしています。何とも奇こうして数回っていくことを大切にしていって保留にブレークポイントを設定します。うにすることは、私が思うに、一部の競合状態がわかりませんはいかがでしょうか。
想定機構の違いによると考えられる。 かを設定する必要がありIEventAggregatorでもどこでも-ど登録のIoCす。これは内蔵のプリズムそしてインスタンスのイベントのアグリゲータ、。
その問題は基本的にどのよう/where/う設定数です。ある特定の注文されたものなどが有ります。私の簡単な例を次に示しませていただきました。モジュールMyModule.のBootstrapperに追加MyModuleのカタログで初期化された:
catalog.AddModule(typeof(MyModule));
MyModuleのデータを蓄積するとともに、jstが、利用への加入をMyModuleRequestedEvent.でも使用してメニューをレジストリへの登録の申請メニューです。これをクリックすると、メニューはトリガはイベント通知MyModuleで求められます。そしてほしいと思いますMyModuleの責任で行います。
public MyModule(IEventAggregator aggregator, IApplicationMenuRegistry menu)
{
_applicationMenu = menu;
_aggregator = aggregator;
}
public void Initialize()
{
var evnt = _aggregator.GetEvent<MyModuleRequestedEvent>();
evnt.Subscribe(MyModuleRequested);
_applicationMenu.RegisterMenuItem("MyModule", evnt);
}
public void MyModuleRequested(bool b)
{
MessageBox.Show("MyModule requested");
}
現在、ボタンの私のシェルを公開します。の殻に同じ(?) イベント名が解決されます。
public Shell(IEventAggregator aggregator)
{
InitializeComponent();
var evnt = aggregator.GetEvent<MyModuleRequestedEvent>();
EventTriggerButton.Click += (s, e) => evnt.Publish(true);
}
注記:
- て証明されたイベントが載っています。追加の加入者のもこの契約者を受けました。
- ありました。場合、契約者ご本人からのおMyModuleいきます。しかし、-奇妙な-している。
- 使わない、入力のイベントです。されるようになったときめなので、入力タイプだったとダミー bool.でいくこ..?
解決
プリズムにイベントのアグリゲータ用弱参照へのリンクです。これを防止するメモリリーからイベントハンドラ.
一度モジュールの初期化子が実行されていますので処分され、イベントハンドラが破壊される前にメイン会場のひとつである。だプリズムのイベントハンドラ周辺を用い負荷が加.
evnt.Subscribe(MyModuleRequested, true);
とにパターンが入れるイベントのご契約が別のクラスは、このサイトのコンからのモジュールの初期化方法。このイベントを生かしておくものを別のモジュールが破壊されました。
他のヒント
いつでも、理論がなされているので今..います。
質問ますの追加モジュールのModuleCatalogueしい。とんでもしれません。そのためのMyModuleべき生きる-そしてまた時にイベントが載っています。
protected override IModuleCatalog GetModuleCatalog()
{
var catalog = new ModuleCatalog();
catalog.AddModule(typeof(MyModule));
return catalog;
}
ただし、これは当てはまりませんのモジュールに生きていることが分かりまく対応します。このモジュール-オブジェクト用の金型などの登録解除する待ちしている契約者のEventAggregatorリストが、ご契約者さんの周りです。ま;私自身も実際の仕事場となる場合はガベージコレクタか休みに前のイベントがトリガーされます。
この音のようにする。ればいい思いソリューションかい歓迎を示唆する一つの異なるreply-スレッドの..
していただくことになります。何ModuleCataloge。の一覧が表示されず初期化しまれ。