Первый пример - это попытка остановить несколько подписок, которая может вызвать проблемы (и утечку), а второй - попытка остановить утечку памяти
Однако вы можете использовать такой шаблон, который имеет свои преимущества, а не пуленепробиваемый способ остановить утечку (т. Е. Я просто помогаю при вычитании, что нет нескольких подписок и что вы не подписались не раз), но это сводит на нет всю эту сложность / вычитание, происходящее
private EventHandler _stuff;
public event EventHandler Stuff
{
add
{
if (_stuff== null || !_stuff.GetInvocationList().Contains(value))
_stuff+= value;
}
// ignore the resharper warning
remove => _stuff -= value;
}
Хотя на самом деле, если вы хотите использовать шаблон событий, вы должны хорошо знать, когда вам нужно подписаться и отписаться, если нет, у вас есть большие проблемы.
Лично я предпочитаю Отделенные сообщения / Агрегатор событий (тип публикации / подтипа). Я редко нарочно создаю мероприятия сантехники в эти дни.