/// <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>()); } }
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 }
public static Task <TResult> RunAsync <TParameter, TResult>(this ExternalEventPair externalEventPair, TParameter parameter)