Ejemplo n.º 1
0
        private void QueueTaskCallback(IAsyncResult ar)
        {
            QueueTaskDelegate queueTaskDelegate = ar.AsyncState as QueueTaskDelegate;

            if (queueTaskDelegate.Equals(_queueTaskDelegate))
            {
                queueTaskDelegate.EndInvoke(ar);
            }

            RunNextTaskInQueue();
        }
Ejemplo n.º 2
0
        public void Enqueue(dynamic data)
        {
            _queueTaskDelegate = new QueueTaskDelegate(PerformTask);

            lock (_LockObject)
            {
                if (_Busy)
                {
                    _Queue.Enqueue(_queueTaskDelegate);
                    _QueueTaskDataDictionary.Add(_queueTaskDelegate, data);
                }
                else
                {
                    _Busy = true;
                    _queueTaskDelegate.BeginInvoke(data, new AsyncCallback(this.QueueTaskCallback), _queueTaskDelegate);
                }
            }
        }