метод отказаться от обработки событий 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