Я предполагаю, что вы упростили пример для краткости, но в вашем фрагменте нет необходимости использовать событие.Packet.Send()
может просто вернуть проверенный результат.Вам действительно нужен более сложный подход, только если будет некоторая асинхронность (например, асинхронная операция, планирование для будущего выполнения и т. Д.), И Packet.Send()
не возвращается немедленно.
В терминах объектаУправление жизненным циклом, ваша подписка на событие не представляет проблемы, так как подписка на событие будет поддерживать обработчик, но не наоборот.Таким образом, класс, к которому принадлежит button1_Click
, не будет собирать мусор, пока существует действующая ссылка на пакет, на который он подписан.Поскольку пакеты имеют короткий срок службы, это не будет проблемой.
Если при использовании в реальных условиях Packet.Send()
не может вернуть результат, то у меня будет соблазн передать делегата в пакетвместо того, чтобы подписываться на событие на нем, при условии, что только один объект должен быть уведомлен о сбое.