示例#1
0
 /// <summary>
 ///     Always call this method ahead of time in Revit API context to make sure that <see cref="RevitTask" /> functions
 ///     properly
 /// </summary>
 public static void Initialize()
 {
     if (ExternalEventCreator == null)
     {
         ExternalEventCreator = new ExternalEventPair(new SyncDelegateExternalEventHandler <ExternalEvent>());
     }
 }
示例#2
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
        }
示例#3
0
 public static Task <TResult> RunAsync <TParameter, TResult>(this ExternalEventPair externalEventPair, TParameter parameter)