Ejemplo n.º 1
0
        public static async Task <TResult> RunAsync <TParameter, TResult>(this ExternalEventPair externalEventPair, TParameter parameter)
#endif
        {
            var genericHandler = (IGenericExternalEventHandler <TParameter, TResult>)externalEventPair.Handler;
            var task           = genericHandler.Prepare(parameter);

#if NET40
            return(new TaskCompletionSource <TResult>()
                   .Await(externalEventPair.GetTrigger(), (trigger, tcs) =>
            {
                trigger.Raise();
                tcs.Await(task);
            }).Task);
#else
            var trigger = await externalEventPair.GetTrigger();

            trigger.Raise();
            return(await task);
#endif
        }