private void EventHandler(string eventName, object sender, EventArgs e, ValueUpdate vu = null) { var record = new EventRecord(eventName, sender, e, vu); lock (recordLock) { RecordedEvents.Add(record); } if (LogEvents) { Debug.WriteLine($"EventMonitor<{typeof(T).FullName}>: caught event from {eventName}"); } CaughtEvent?.Invoke(this, new EventRecordEventArgs(record)); }