ОК, так что это скорее ответ, чем вопрос, но после запроса этого вопроса и сведение различных бит из Дастин Кэмпбелл, Егор, а также последний совет от IObservable/Rx/Reactive framework ', я думаю, что разработал подходящее решение для этой конкретной проблемы. Он может быть полностью заменен IObservable/Rx/Reactive framework, но только опыт покажет это.
Я сознательно создал новый вопрос, чтобы дать мне возможность объяснить, как я попал к этому решению, поскольку это может быть не сразу очевидным.
Есть много связанных вопросов, большинство из которых говорят вам, что вы не можете использовать встроенные lambdas, если хотите, чтобы они могли отделить их позже:
- Слабые события в .Net?
- Отключение событий с lambdas на С#
- Может ли использование lambdas в качестве обработчиков событий вызвать утечку памяти?
- Как отказаться от подписки на событие, использующее выражение лямбда?
- Отменить анонимный метод в С#
И это правда, что, если вы хотите быть в состоянии отделить их позже, вам нужно сохранить ссылку на вашу лямбду. Однако, если вы просто хотите, чтобы обработчик события отсоединился, когда ваш абонент вышел из сферы действия, этот ответ для вас.