Would you like to just await the next time that an event fires? It takes a little setup, but you can!
Migrating your code from using an Event-based Asynchronous Pattern to an Task-based Asynchronous Pattern can be very tricky. You can use the TaskCompletionSource to manage your Task, and then you just need to create the wire up around registering and unregistering your event handler. Unfortunately this process is not nearly as generic as I would like.
Event-based Asynchronous Pattern Tests
Here is a way of waiting for an event to fire by simply sleeping while we wait.
This is a terrible solution because we can not know how long we will have to wait for the event. This means we have to wait for one long time period, or we have to periodically poll to see if the event has fired.
public delegate void SingleParamTestDelegate(int key, string value);