Estoy buscando pasar un evento a una función de ayuda. Esta función adjuntará un método al evento. Sin embargo, estoy teniendo problemas para pasar el evento correctamente. He intentado pasar un EventHandler<TEventArgs>
. Se compila, pero los eventos no están adjuntos (pero todavía se agregan, parece que se hace una copia del controlador de eventos).¿Cómo puedo pasar un evento a una función en C#?
Por ejemplo, si tengo esto:
public event EventHandler<EventArgs> MyEvent;
Y la función auxiliar:
public static void MyHelperFunction<TEventArgs>(EventHandler<TEventArgs> eventToAttachTo)
{
eventToAttachTo += (sender, e) => { Console.WriteLine("Hello world"); };
}
Y la persona que llama:
MyHelperFunction(MyEvent);
MyEvent(null, new EventArgs()); // Does nothing.
@Strager: ¿Te importaría elaborar un poco sobre los detalles de cómo estabas usando esto? Encontré esta pregunta muy interesante, pero estoy teniendo dificultades para ver el caso de uso. –
@John Feminella, estaba creando algunas funciones auxiliares, y una sincrónicamente espera un evento. Se utilizan principalmente para reducir la reutilización de código para varios métodos WaitFor (por ejemplo, WaitForConnected) en mis clases de red (que funcionan de forma asíncrona). – strager