Je cherche à passer un événement à une fonction d'aide. Cette fonction va attacher une méthode à l'événement. Cependant, j'ai du mal à passer correctement l'événement. J'ai essayé de passer un EventHandler<TEventArgs>
. Il compile, mais les événements ne sont pas attachés (mais sont toujours ajoutés, il semble qu'une copie du gestionnaire d'événement est faite).Comment puis-je transmettre un événement à une fonction en C#?
Par exemple, si j'ai ceci:
public event EventHandler<EventArgs> MyEvent;
Et la fonction d'aide:
public static void MyHelperFunction<TEventArgs>(EventHandler<TEventArgs> eventToAttachTo)
{
eventToAttachTo += (sender, e) => { Console.WriteLine("Hello world"); };
}
Et l'appelant:
MyHelperFunction(MyEvent);
MyEvent(null, new EventArgs()); // Does nothing.
@Strager: Pourriez-vous élaborer un peu sur les détails de la façon dont vous utilisiez cela? J'ai trouvé cette question très intéressante mais j'ai du mal à voir le cas d'utilisation. –
@John Feminella, je créais des fonctions d'aide, et on attend de façon synchrone un événement. Ils sont principalement utilisés pour réduire la réutilisation de code pour plusieurs méthodes WaitFor (par exemple WaitForConnected) dans mes classes de mise en réseau (qui fonctionnent de manière asynchrone). – strager