/// <summary> /// Queues an AsyncEventHandler invocation to the SequenceTokenWorkDispatcher. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="eventHandler">The event handler.</param> /// <param name="sender">The sender.</param> /// <param name="args">The arguments.</param> /// <param name="dispatcher">The dispatcher.</param> /// <param name="tokens">The tokens.</param> public static void RaiseQueued <T>(this AsyncEventHandler <T> eventHandler, object sender, T args, SequenceTaskScheduler dispatcher, params object[] tokens) { // queue a task that produces a var task = new Task <Task>(async() => { await eventHandler.RaiseAsync(sender, args); }); dispatcher.EnqueueWorkAsync(task, tokens).ObserveExceptions(); }