public async Task <AsyncFuncExecutionResult <T> > TryExecuteAsync <T>(Func <Task <T> > code) { AsyncFuncExecutionResult <T> result; try { var codeResult = await code.Invoke(); result = AsyncFuncExecutionResult <T> .SuccessResult(executedBy : this, executedCode : code, value : codeResult); } catch (Exception ex) { this.HandleException(ex); result = AsyncFuncExecutionResult <T> .FailedResult(executedBy : this, executedCode : code, exception : ex); } this.OnResult(result); return(result); }
protected virtual void OnResult <T>(AsyncFuncExecutionResult <T> result) { }