public static async Task <TOutput> RunInvokeAsync <TInput, TOutput>(this Control ctrl, TInput input, Func <TInput, TOutput> action) { if (!ctrl.InvokeRequired) { return(action(input)); } var poly = new PollyFunc <TInput, TOutput>(action, input); return(await ctrl.RunInvokeAsync <TOutput, PollyFunc <TInput, TOutput> >(poly)); }
public static async Task RunInvokeAsync <TInput>(this Control ctrl, TInput input, Func <TInput, Task> action) { if (!ctrl.InvokeRequired) { await action(input); } else { var poly = new PollyFunc <TInput, Task>(action, input); await ctrl.RunInvokeAsync <Task, PollyFunc <TInput, Task> >(poly); } }