public TResult Invoke <TResult>(ExecuteItem <TService> item) { if (_disposing) { return(default(TResult)); } _pools.Enqueue(item); Execute(); return(item.WaitResult <TResult>()); }
public TResult Invoke <TResult>(Func <TService, TResult> func) { var queue = Get(); var item = new ExecuteItem <TService> { Action = service => func(service) }; var result = queue.Invoke <TResult>(item); if (item.Exception != null) { throw item.Exception; } return(result); }
private bool ExecuteResultSuccess(TService clrWrapper, ExecuteItem <TService> result) { try { var task = result.Execute(clrWrapper).Wait(ExecuteTimeout); if (!task) { result.Abort(); } return(task); } catch (Exception ex) { return(false); } }