private void QueueTaskCallback(IAsyncResult ar) { QueueTaskDelegate queueTaskDelegate = ar.AsyncState as QueueTaskDelegate; if (queueTaskDelegate.Equals(_queueTaskDelegate)) { queueTaskDelegate.EndInvoke(ar); } RunNextTaskInQueue(); }
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); } } }