Beispiel #1
0
        //-------------------------------------------------------
        // Result traversal methods
        //-------------------------------------------------------

        /// <summary>
        /// Retrieve next result. Returns true if result exists and false if no more
        /// results are available.
        /// This method will block until a result is retrieved or the query is cancelled.
        /// </summary>
        public bool Next()
        {
            if (!valid)
            {
                executor.CheckForException();
                return(false);
            }

            try
            {
                row = queue.Take(cancelToken);
            }
            catch (OperationCanceledException)
            {
                valid = false;
                executor.CheckForException();
                return(false);
            }

            if (row == END)
            {
                valid = false;
                executor.CheckForException();
                return(false);
            }
            return(true);
        }