示例#1
0
 public TResult Invoke <TResult>(ExecuteItem <TService> item)
 {
     if (_disposing)
     {
         return(default(TResult));
     }
     _pools.Enqueue(item);
     Execute();
     return(item.WaitResult <TResult>());
 }
示例#2
0
        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);
        }
示例#3
0
        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);
            }
        }