处理在单独的DLL中引发的事件

时间:2019-02-16 22:14:37

标签: c# events dll event-handling

我在处理在单独的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());
   }
}

0 个答案:

没有答案