"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo cancelar la suscripción de los manejadores de eventos Lambda en C#?

¿Cómo cancelar la suscripción de los manejadores de eventos Lambda en C#?

Publicado el 2025-03-25
Navegar:329

How to Unsubscribe Lambda Event Handlers in C#?

para cancelar la suscripción del controlador de eventos Lambda en C#

]

En C#, las expresiones de lambda anónima proporcionan una forma conveniente de crear controladores de eventos. Sin embargo, un problema común es: cómo eliminar o darse de baja a estos manejadores de eventos.

La especificación C# no garantiza que dos códigos tengan las mismas expresiones lambda que producen delegados iguales. Para garantizar una suspensión exitosa, se recomienda almacenar explícitamente instancias delegadas.

Use el método EventHandler nombrado

]]

La forma más directa es definir un método y asignarlo como un controlador de eventos:

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

...

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

almacenamiento de variables usando delegado

]]

Para crear un controlador de eventos autónomo usando una expresión lambda, puede usar la variable de almacenamiento delegado:

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

Use el método Helper

Aunque los métodos de ayuda no se pueden usar para encapsular los controladores de eventos debido a las limitaciones de representación de eventos, los delegados genéricos pueden proporcionar soluciones:

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

siguiendo estos métodos, los desarrolladores pueden eliminar efectivamente los controladores de eventos Lambda, asegurando la gestión y el control de eventos adecuados sobre el ciclo de vida de la suscripción de eventos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3