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.
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