title: c# event handler is called multiple times when event is raised once
body: <p>Below is my code, first is where I raise the event and second section is where I consume it in another class. It seems pretty straight forward, but the logs are showing that even though the event is raised once, the event is firing 20+ times on the class that consumes this event. Any ideas?</p>
  
  <p><code>IBSerialPort</code> class:</p>
  
  <pre><code>public delegate void PacketReceivedHandler(object sender, PacketReceivedEventArgs e);
  public event PacketReceivedHandler OnPacketReceived;
  
  public class PacketReceivedEventArgs : EventArgs
  {
    public Packet PacketReceived { get; private set; }
  
    public PacketReceivedEventArgs(Packet packet)
    {
      PacketReceived = packet;
    }
  }
  
  // raise event
  if (OnPacketReceived != null)
  {
      Log("This is only called ONCE!");
      PacketReceivedEventArgs args = new PacketReceivedEventArgs(data);
      OnPacketReceived(this, args);
  }
  </code></pre>
  
  <p>Class that uses <code>IBSerialPort</code> and consumes its <code>OnPacketReceived</code> Event:</p>
  
  <pre><code>IBSerialPort ibSerialPort = null;
  ..
  if (ibSerialPort == null)
  {
    Log("This is only called once");
  
    ibSerialPort = IBSerialPort.Instance;
  
    ibSerialPort.OnPacketReceived += ibSerialPort_OnPacketReceived;
  }
  
  void ibSerialPort_OnPacketReceived(object sender, IBSerialPort.PacketReceivedEventArgs args)
  {
     Log("This is called ~25 times!!!!");
  }
  </code></pre>