Método para cancelar a inscrição do manipulador de eventos Lambda em C#
]Em C#, as expressões Lambda Anonymous fornecem uma maneira conveniente de criar manipuladores de eventos. No entanto, um problema comum é: como remover ou cancelar a inscrição nesses manipuladores de eventos.
A especificação C# não garante que dois códigos tenham as mesmas expressões Lambda que produzem delegados iguais. Para garantir a inscrição bem -sucedida, é recomendável armazenar explicitamente instâncias delegadas.
use o método EventHandler nomeado
]A maneira mais direta é definir um método e atribuí -lo como um manipulador de eventos:
public void ShowWoho(object sender, EventArgs e)
{
MessageBox.Show("Woho");
}
...
button.Click = ShowWoho;
...
button.Click -= ShowWoho;
armazenando variáveis usando Delegate
]Para criar um manipulador de eventos auto-removido usando uma expressão lambda, você pode usar a variável de armazenamento delegada:
EventHandler handler = null;
handler = (sender, args) =>
{
button.Click -= handler; // 取消订阅
// 在此处添加仅执行一次的代码
};
button.Click = handler;
use o método Helper
Embora os métodos auxiliares não possam ser usados para encapsular os manipuladores de eventos devido a limitações de representação de eventos, os delegados genéricos podem fornecer soluções:
button.Click = Delegates.AutoUnsubscribe(
(sender, args) =>
{
// 此处添加仅执行一次的代码
},
handler => button.Click -= handler);
Seguindo esses métodos, os desenvolvedores podem remover efetivamente os manipuladores de eventos Lambda, garantindo o gerenciamento e o controle de eventos adequados sobre o ciclo de vida da assinatura do evento.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3