我在处理在单独的exe中的单独的DLL中引发的事件时遇到一些问题。我有一个预订另一个DLL中的事件的类。引发事件时,到进行事件处理时,事件处理程序为null,因为预订该事件的对象存在于单独的调用堆栈中。有没有一种干净的方法来处理这样的事情?
公共类B与类A不在另一个可执行文件(相同解决方案)上的另一个dll中。
public static class CustomEvent
{
public static event EventHandler<CustomEventArgs> eventHandler;
public static void Raise(CustomEventArgs args)
{
// When class B raises the event. The eventHandler here is null.
// Meaning it doesn't know that Class A has subscribed to the event.
EventHandler<CutomEventArgs> handler = eventHandler;
if(handler != null)
{
eventHandler(typeof(CustomEvent), args);
}
}
}
public class A
{
public class A ()
{
CustomEvent.eventHandler += HandleEvent;
}
public class B
{
public void Function()
{
CustomEvent.Raise(new CustomEventArgs());
}
}