public virtual IProgressResult <TProgress> Execute <TProgress>(Action <IProgressPromise <TProgress> > action)
        {
            ProgressResult <TProgress> result = new ProgressResult <TProgress>(true);

            Executors.RunAsyncNoReturn(() =>
            {
                try
                {
                    if (result.IsCancellationRequested)
                    {
                        result.SetCancelled();
                        return;
                    }

                    action(result);
                    if (!result.IsDone)
                    {
                        result.SetResult(null);
                    }
                }
                catch (Exception e)
                {
                    if (!result.IsDone)
                    {
                        result.SetException(e);
                    }
                }
            });
            return(result);
        }
Example #2
0
        public virtual IAsyncResult <TResult> Execute <TResult>(Action <IPromise <TResult> > action)
        {
            var result = new AsyncResult <TResult>(true);

            Executors.RunAsyncNoReturn(() =>
            {
                try
                {
                    if (result.IsCancellationRequested)
                    {
                        result.SetCancelled();
                        return;
                    }

                    action(result);
                    if (!result.IsDone)
                    {
                        result.SetResult();
                    }
                }
                catch (Exception e)
                {
                    if (!result.IsDone)
                    {
                        result.SetException(e);
                    }
                }
            });
            return(result);
        }
        public virtual Asynchronous.IAsyncResult Execute(Action <IPromise> action)
        {
            AsyncResult result = new AsyncResult(true);

            Executors.RunAsyncNoReturn(() =>
            {
                try
                {
                    if (result.IsCancellationRequested)
                    {
                        result.SetCancelled();
                        return;
                    }

                    action(result);
                    if (!result.IsDone)
                    {
                        result.SetResult(null);
                    }
                }
                catch (Exception e)
                {
                    if (!result.IsDone)
                    {
                        result.SetException(e);
                    }
                }
            });
            return(result);
        }
        public void Start()
        {
            if (this.running)
            {
                return;
            }

            this.running = true;
            Executors.RunAsyncNoReturn(() =>
            {
                IDelayTask task = null;
                while (running)
                {
                    lock (_lock)
                    {
                        if (queue.Count <= 0)
                        {
                            Monitor.Wait(_lock);
                            continue;
                        }

                        task = queue[0];
                        if (task.Delay.Ticks > 0)
                        {
                            Monitor.Wait(_lock, task.Delay);
                            continue;
                        }

                        queue.RemoveAt(0);
                    }

                    task.Run();
                }
            });
        }
 public virtual void Run()
 {
     try
     {
         Executors.RunAsyncNoReturn(() => this.wrappedAction());
     }
     catch (Exception)
     {
     }
 }
Example #6
0
            public virtual void Run()
            {
                try
                {
                    Executors.RunAsyncNoReturn(() => this.wrappedAction());
                }
                catch (Exception e)
                {
#if DEBUG
                    if (log.IsWarnEnabled)
                    {
                        log.Warn(e);
                    }
#endif
                }
            }
        public virtual IAsyncResult <TResult> Execute <TResult>(Func <TResult> func)
        {
            AsyncResult <TResult> result = new AsyncResult <TResult>(true);

            Executors.RunAsyncNoReturn(() =>
            {
                try
                {
                    if (result.IsCancellationRequested)
                    {
                        result.SetCancelled();
                        return;
                    }

                    TResult tr = func();
                    result.SetResult(tr);
                }
                catch (Exception e)
                {
                    result.SetException(e);
                }
            });
            return(result);
        }
Example #8
0
        public virtual IAsyncResult Execute(Action action)
        {
            AsyncResult result = new AsyncResult(true);

            Executors.RunAsyncNoReturn(() =>
            {
                try
                {
                    if (result.IsCancellationRequested)
                    {
                        result.SetCancelled();
                        return;
                    }

                    action();
                    result.SetResult();
                }
                catch (Exception e)
                {
                    result.SetException(e);
                }
            });
            return(result);
        }