Ejemplo n.º 1
0
        internal void DoSuccess()
        {
            using (spinLock.Hold())
            {
                if (status != WaitableStatus.Running)
                {
                    return;
                }

                status = WaitableStatus.Success;
            }

            foreach (var callback in successCallbacks)
            {
                callback();
            }
            Dispose();
        }
Ejemplo n.º 2
0
        protected void Fail(Exception e)
        {
            using (spinLock.Hold())
            {
                if (status != WaitableStatus.Running)
                {
                    return;
                }

                Exception = e;
                status    = WaitableStatus.Error;
            }

            foreach (var callback in catchCallbacks)
            {
                callback(e);
            }
            Dispose();
        }
Ejemplo n.º 3
0
        private protected void Success()
        {
            using (spin.Hold())
            {
                if (status != WaitableStatus.Running)
                {
                    return;
                }

                status = WaitableStatus.Success;
            }

            var actions = successCallbacks;

            Dispose();

            foreach (var callback in actions)
            {
                callback();
            }
        }
Ejemplo n.º 4
0
        public void Abort(bool recursive = true)
        {
            using (spinLock.Hold())
            {
                if (status != WaitableStatus.Running)
                {
                    return;
                }

                Exception = null;
                status    = WaitableStatus.Abort;
            }

            OnAbort(recursive);

            foreach (var callback in catchCallbacks)
            {
                callback(Exception);
            }
            Dispose();
        }
Ejemplo n.º 5
0
        private protected void Fail(Exception e)
        {
            using (spin.Hold())
            {
                if (status != WaitableStatus.Running)
                {
                    return;
                }

                Exception = e;
                status    = WaitableStatus.Error;
            }

            var actions = failCallbacks;

            Dispose();

            foreach (var callback in actions)
            {
                callback(e);
            }
        }
Ejemplo n.º 6
0
        public void Abort()
        {
            using (spin.Hold())
            {
                if (status != WaitableStatus.Running)
                {
                    return;
                }

                Exception = null;
                status    = WaitableStatus.Abort;
            }

            OnAbort();

            var actions = failCallbacks;

            Dispose();
            foreach (var callback in actions)
            {
                callback(null);
            }
        }
Ejemplo n.º 7
0
 protected Waitable()
 {
     id     = IdGenerator.Next();
     status = WaitableStatus.Running;
 }