我无法重现该问题(并且项目太大而无法在此处发布,而且我不确定要发布哪些相关部分)并且我需要了解此处可能出现的问题。
我有带有静态事件的抽象类
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 线程中运行。
我设置了断点:
- 在 上
AddHandler()
,它运行,然后类的实例持续存在。 - On
Invoke()
,它在OnTest
被调用时运行,如果我调用Test.GetInvocationList()
其中一个是DeliverEvent()
from ,我可以看到 2 个订阅者WeakEventManager
,因此事件已注册并且Invoke()
应该调用弱事件处理程序。 - 在普通事件处理程序中,它运行。
- 在弱事件处理程序中,什么都没有,这个断点永远不会被击中。
关于为什么会发生这种情况或我应该调查什么的任何想法?
我试图查看 .net资源,在那里找到答案,但有些ProtectedAddHandler
资源我找不到……我找到了,但接下来是什么?抽象方法,谁来实现?...