I want to pass an event to a method. The code I have is as follows, but what did I set for the type "XXX"?
internal class Retriever<TEventArgs> where TEventArgs : EventArgs { public Retriever( XXX event, EventHandler<TEventArgs> handler ) { _event = event; _handler = handler; _event += handler; } XXX _event; EventHandler<TEventArgs> _handler; }
Edit : Develop a question. I am trying to write an event generator where the event is signed before the event occurred and after the event occurred. This class will look like this:
internal class EventGuard<TEventArgs> : IDisposable where TEventArgs : EventArgs { public Retriever( XXX event, EventHandler<TEventArgs> handler ) { _event = event; _handler = handler; _event += handler; } XXX _event; EventHandler<TEventArgs> _handler; public void Dispose() { _event -= _handler; } }
and I will use it as follows. Proxy.RetrieveAsync is a web method that, when completed, will raise the Proxy.RetrieveCompleted event. The body of the HandleRetrieveCompleted completion HandleRetrieveCompleted , which is not shown, will call Set () in ManualResetEvent (passed as a UserState).
using ( new EventGuard<EventArgs>( Proxy.RetrieveCompleted, new EventHandler<EventArgs>( HandleRetrieveCompleted) ) ) { ManualResetEvent resetEvent = new ManualResetEvent(); Proxy.RetrieveAsync(resetEvent); resetEvent.WaitOne(); }
source share