== Why is this an issue? When raising an event, two arguments are expected by the ``++EventHandler++`` delegate: Sender and event-data. There are three guidelines regarding these parameters: * Do not pass ``++null++`` as the sender when raising a non-static event. * Do pass ``++null++`` as the sender when raising a static event. * Do not pass ``++null++`` as the event-data. If no data should be passed, then ``++EventArgs.Empty++`` should be used. This rule raises an issue when any of these guidelines is not met. === Noncompliant code example [source,text] ---- using System; namespace MyLibrary { class Foo { public event EventHandler ThresholdReached; protected virtual void OnThresholdReached(EventArgs e) { ThresholdReached?.Invoke(null, e); // Noncompliant } } } ---- === Compliant solution [source,text] ---- using System; namespace MyLibrary { class Foo { public event EventHandler ThresholdReached; protected virtual void OnThresholdReached(EventArgs e) { ThresholdReached?.Invoke(this, e); } } } ----