public void Add <T>(Func <Task <T> > oper, Func <T, Task> forwardOutcomeOrNull) { _operations.Add(async() => { var outcome = await oper(); if (forwardOutcomeOrNull != null) { await ExecOnUiThread.ExecAsync(() => forwardOutcomeOrNull(outcome)); } return(Unit.Instance); }); }
public void Add <InpT1, InpT2, OutT>( Func <Tuple <InpT1, InpT2> > input, Func <InpT1, InpT2, Task <OutT> > oper, Func <OutT, Task> forwardOutcomeOrNull) { _operations.Add(async() => { var pars = input(); var outcome = await oper(pars.Item1, pars.Item2); if (forwardOutcomeOrNull != null) { await ExecOnUiThread.ExecAsync(() => forwardOutcomeOrNull(outcome)); } return(Unit.Instance); }); }