Example #1
0
        // called from separate thread
        void EmitRowsOverTime()
        {
            DateTime t         = DateTime.Now;
            int      totalRows = queryReader.TotalRecordsRead;

            while (true)
            {
                Thread.Sleep(5000);
                totalRows = queryReader.TotalRecordsRead;
                DateTime now = DateTime.Now;
                TimeSpan ts  = now - t;

                bool cancelled = false;
                lock (workerLock)
                {
                    WorkerProgress wb = workers.First();
                    if (wb.t != null && wb.t == Thread.CurrentThread && wb.cancelled)
                    {
                        cancelled = true;
                    }
                }
                if (cancelled)
                {
                    break;
                }
                else
                {
                    OnQueryRowsOverTime((decimal)totalRows / (decimal)ts.TotalSeconds, totalRows);
                }
            }
        }
Example #2
0
        void OnReaderFinished()
        {
            lock (workerLock)
            {
                WorkerProgress wb = workers.First();
                if (wb.t != null)
                {
                    wb.cancelled = true;
                }
            }

            if (ReaderFinished != null)
            {
                //ReaderFinished(queryReader.TotalRecordsRead);
                ReaderFinished(this, new ReaderFinishedEvents(queryReader.TotalRecordsRead));
            }
        }
Example #3
0
        /// <summary>
        /// Represents an Excel-compatible workbook file, with a specified WorkbookParams.
        /// </summary>
        /// <param name="p1"></param>
        public Workbook(WorkBookParams p1)
        {
            this.runParameters = p1;
            //// max rows is actually max rows subtract 1, since we're including row headers
            //this.runParameters.MaxRowsPerSheet = this.runParameters.MaxRowsPerSheet - 1;

            queryReader = new QueryReader(runParameters.Query, runParameters.QueryTimeout, runParameters.FromFile, runParameters.ConnectionString);

            workers = new List <WorkerProgress>();

            Thread t = new Thread(EmitRowsOverTime);

            t.IsBackground = true;
            WorkerProgress w = new WorkerProgress();

            w.t         = t;
            w.cancelled = false;

            lock (workerLock)
                workers.Add(w);
        }