コード例 #1
0
ファイル: AsyncronousEngine.cs プロジェクト: russlank/Jint.Ex
        private void ExecuteEvent(CallBackEvent c, CallBackEventQueue tmpQ)
        {
            if (c.Enabled)
            {
                c.Enabled = false;
                switch (c.Type)
                {
                case CallBackType.ClearQueue:
                    this._eventQueue.Clear();
                    break;

                case CallBackType.ScriptExecution:
                    this.Execute(c.Source);
                    break;

                case CallBackType.UserCallback:
                    this.ExecuteCallBack(c.Function, c.Parameters);
                    break;

                case CallBackType.TimeOut:
                    this.ExecuteCallBack(c.Function);
                    break;

                case CallBackType.Interval:
                    c.Enabled = true;
                    this.ExecuteCallBack(c.Function);
                    break;
                }
            }
            this._eventQueue.RemoveTopBecauseProcessed(c, true);
            if (tmpQ != null)
            {
                tmpQ.RemoveTopBecauseProcessed(c, false);
            }
        }
コード例 #2
0
 public CallBackEventQueue Clone()
 {
     lock (obj)
     {
         var q = new CallBackEventQueue();
         foreach (var e in _queue)
         {
             _queue.Add(e);
         }
         return(q);
     }
 }
コード例 #3
0
 public CallBackEventQueue CloneEventWithDelay()
 {
     lock (obj)
     {
         var q = new CallBackEventQueue();
         foreach (var e in _queue)
         {
             if (e.Delay > 0 && e.Enabled)
             {
                 q.EnqueueNotSafe(e);
             }
         }
         return(q);
     }
 }
コード例 #4
0
 public CallBackEventQueue GetEventsWithNoDelay()
 {
     lock (obj)
     {
         var q = new CallBackEventQueue();
         foreach (var e in _queue)
         {
             if (e.Delay == 0 && e.Enabled)
             {
                 q.EnqueueNotSafe(e);
             }
         }
         return(q);
     }
 }