0

問題を再現できません (プロジェクトが大きすぎてここに投稿できません。さらに、投稿する関連部分がわかりません)。ここで何がうまくいかないかについてのアイデアが必要です

静的イベントを持つ抽象クラスがあります

public abstract partial class A : Base
{
    public static event EventHandler Test;
    public static void OnTest() => Test?.Invoke(null, EventArgs.Empty);
}

次に、通常どおりこのイベントにサブスクライブし、次を使用しWeakEventManagerます。

A.Test += (s, e) => { };
WeakEventManager<A, EventArgs>.AddHandler(null, nameof(A.Test), (s, e) => { });

また、何らかの理由で、呼び出されたときに弱いイベント ハンドラーが起動されませんOnTest()。すべて (呼び出しとハンドラー) は UI スレッドで動作します。

ブレークポイントを設定しました:

  1. で実行AddHandler()され、クラスのインスタンスが保持されます。
  2. Invoke()では、 が呼び出されたときに実行されます。そのうちの 1 人がからOnTest呼び出された場合、2 つのサブスクライバーが表示されるため、イベントが登録され、弱いイベント ハンドラーを呼び出す必要があります。Test.GetInvocationList()DeliverEvent()WeakEventManagerInvoke()
  3. 通常のイベント ハンドラー内で実行されます。
  4. 弱いイベント ハンドラー内では、何もありません。このブレークポイントはヒットしません。

なぜこれが発生するのか、または何を調査する必要があるのか​​についてのアイデアはありますか?


そこに答えを見つけるために.netソースを調べようとしましたが、ProtectedAddHandler見つからないソースがあります...見つかりましが、次は何ですか? 抽象メソッド、それを実装するのは誰ですか?...

4

1 に答える 1