我有一个生成 dll 的 WinForms 控件项目。还有一个使用第一个项目的第二个 dll 项目(也是 winforms 控件)。还有第三个 winforms 项目,这次是一个表单,它使用第二个项目。所以[第三个项目] <>-----> [第二个项目] <>--------> [第一个项目]
第一个项目公开了一个静态事件。我正在尝试从第三个项目订阅该事件。在 += 调用之后,该事件保持为空(不是订阅)。
为什么不订阅?是因为 Winforms 控件有自己的线程吗?FirstProject 用户控件是在某个时间点动态创建的。但我希望静态能够正常工作,而无需做任何其他事情,
项目一
namespace Something
{
public partial class FirstClass : UserControl
{
...
public delegate void EventHandler();
public static event EventHandler MyEvent;
...
}
}
项目 3
namespace Another
{
public partial class ThirdClass : Form
{
...
public ThirdClass()
{
....
Something.FirstClass.MyEvent += new Something.FirstClass.EventHandler(MyHandler);
}
public void MyHandler()
{
}
...
}
}
编辑 我创建了一个小应用程序,它具有获取三个项目和静态事件的基础知识。它有效。因此,正在发生其他事情。
编辑 2 包含第一个项目的 dll,即带有事件的项目,被加载了两次。我刚刚添加了一个别名,但没有帮助。并且仍然不会解释在 += 之后事件仍然为空。
编辑 3我转换了事件,所以我有添加/删除访问器对。它确实进入了添加。Handler 方法正确地获取了值(因此没有 null),但是一旦它出去,又是 null。