Esempio n. 1
0
        /// <summary>
        /// Executes the callback passed as state and signals its completion when it has finished executing.
        /// </summary>
        /// <param name="state"></param>
        private void HandleWorkItem(object state)
        {
            QueuedCallback qc = (QueuedCallback)state;

            try { qc.Callback(qc.State); }
            finally { DoneWorkItem(); }
        }
Esempio n. 2
0
 /// <summary>Queues a user work item to the ThreadPool.</summary>
 /// <param name="callback">The work item to be queued.</param>
 /// <param name="state">State to be passed to the queued work item</param>
 public void QueueUserWorkItem(WaitCallback callback, object state)
 {
     ThrowIfDisposed();
     QueuedCallback qc = new QueuedCallback();
     qc.Callback = callback;
     qc.State = state;
     Interlocked.Increment(ref _remainingWorkItems);
     ThreadPool.QueueUserWorkItem(new WaitCallback(HandleWorkItem), qc);
 }
Esempio n. 3
0
        /// <summary>
        /// Queues a user work item to the ThreadPool.
        /// </summary>
        /// <param name="callback">The work item to be queued.</param>
        /// <param name="state">State to be passed to the queued work item</param>
        public void QueueUserWorkItem(WaitCallback callback, object state)
        {
            ThrowIfDisposed();
            QueuedCallback qc = new QueuedCallback();

            qc.Callback = callback;
            qc.State    = state;
            Interlocked.Increment(ref _remainingWorkItems);
            ThreadPool.QueueUserWorkItem(new WaitCallback(HandleWorkItem), qc);
        }
        /// <summary>Queues a user work item to the ThreadPool.</summary>
        /// <param name="callback">The work item to be queued.</param>
        /// <param name="state">State to be passed to the queued work item</param>
        public void QueueUserWorkItem(WaitCallback callback, object state)
        {
            ThrowIfDisposed();
            QueuedCallback qc = new QueuedCallback();

            qc.Callback = callback;
            qc.State    = state;
            lock (_done) _remainingWorkItems++;
            ThreadPool.QueueUserWorkItem(new WaitCallback(HandleWorkItem), qc);
        }
Esempio n. 5
0
 public void QueueWorkItem(Action act, object state)
 {
     ThrowIfDisposed();
     QueuedCallback qc = new QueuedCallback();
     qc.Callback = (x => act());
     qc.State = state;
     lock (_done)
         _remainingWorkItems++;
     ThreadPool.QueueUserWorkItem(new WaitCallback(HandleWorkItem), qc);
 }