public static async Task <TOutput> RunInvokeAsync <TOutput, TPolly>(this Control ctrl, TPolly action) where TPolly : struct, IPollyFunc <TOutput> { var src = new InvokeActionCompletionSource <TOutput>(action.Execute, ctrl); return(await src.Task); }
public static async Task <T> RunInvokeAsync <T>(this Control ctrl, Func <T> action) { if (!ctrl.InvokeRequired) { return(action()); } var src = new InvokeActionCompletionSource <T>(action, ctrl); return(await src.Task); }
public static async Task RunInvokeAsync(this Control ctrl, Action action) { if (!ctrl.InvokeRequired) { action(); } else { var src = new InvokeActionCompletionSource <Object>(action, ctrl); await src.Task; } }