«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как отказаться от обработчиков обработчиков событий Lambda в C#?

Как отказаться от обработчиков обработчиков событий Lambda в C#?

Опубликовано в 2025-03-25
Просматривать:118

How to Unsubscribe Lambda Event Handlers in C#?

метод отказаться от обработки событий Lambda в C#

]]

в C#, анонимные выражения Lambda обеспечивают удобный способ создания обработчиков событий. Тем не менее, общая проблема заключается в том, как удалить или отменить подписку на эти обработчики событий.

]

Спецификация C# не гарантирует, что два кода имеют одинаковые выражения Lambda, которые производят равные делегаты. Чтобы обеспечить успешную отмену подписки, рекомендуется явно хранить делегированные экземпляры.

]

Используйте именованный метод EventHandler

]]

Самый прямой способ - определить метод и назначить его как обработчик событий:

public void ShowWoho(object sender, EventArgs e)
{
    MessageBox.Show("Woho");
}

...

button.Click  = ShowWoho;
...
button.Click -= ShowWoho;
]

хранение переменных с использованием делегата

]

Чтобы создать самоопределенного обработчика событий, используя выражение Lambda, вы можете использовать переменную хранилища делегата:

]
EventHandler handler = null;
handler = (sender, args) =>
{
    button.Click -= handler; // 取消订阅
    // 在此处添加仅执行一次的代码
};
button.Click  = handler;
]

используйте Helper Method

Хотя вспомогательные методы не могут использоваться для инкапсуляции обработчиков событий из -за ограничений представления событий, общие делегаты могут предоставить решения:

]
button.Click  = Delegates.AutoUnsubscribe(
    (sender, args) =>
    {
        // 此处添加仅执行一次的代码
    },
    handler => button.Click -= handler);
]

] Следуя этим методам, разработчики могут эффективно удалять обработчики событий Lambda, обеспечивая правильное управление событиями и контроль над жизненным циклом подписки на события.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3