Розбираємо часті промахи під час роботи з подіями й делегатами: подвійна підписка (
+=), забута відписка (
-=,
IDisposable), винятки в обробниках і обхід через
GetInvocationList(), модифікацію підписок під час розсилки, виклики за
null і безпечний
?.Invoke, коректні сигнатури
EventHandler/
EventHandler<T>, виклик лише через
OnEventName, акуратні аксесори
add/
remove, пастки зі
static-подіями, замиканнями в лямбдах і патерном слабких подій. Плюс поради щодо найменування та стандартних сигнатур.