// Post a work item and wait for it to be processed.
        // The processing of the item is done on the client thread
        internal bool PostSyncWorkItem (QueueItem workItem)
        {
            QueueItem.SyncQueueItem syncItem = new QueueItem.SyncQueueItem (workItem);

            // save the data
            _q.Enqueue (syncItem);

            // Start the processing on a different thread
            _ev.Set ();

            // Wait for the processing to be completed
            return syncItem._ev.WaitOne (2000, false);
        }
            // ------------------------------------------------------
            //
            // Constructors
            //
            // ------------------------------------------------------

            #region Constructors

            // Queue an item to be processed in a different thread.
            internal SyncQueueItem (QueueItem qItem)
            {
                _ev = new AutoResetEvent (false);
                _qItem = qItem;
            }
Example #3
0
            // ------------------------------------------------------
            //
            // Constructors
            //
            // ------------------------------------------------------

            #region Constructors

            // Queue an item to be processed in a different thread.
            internal SyncQueueItem(QueueItem qItem)
            {
                _ev    = new AutoResetEvent(false);
                _qItem = qItem;
            }