Ejemplo n.º 1
0
        public void Start(ProgressBox progress)
        {
            Queue <ThreadWorker> threadQueue = new Queue <ThreadWorker>();

            for (int i = 0; i < databases.Count; i++)
            {
                string database = databases[i];

                ThreadWorker _worker = new ThreadWorker()
                {
                    WorkerReportsProgress = true
                };
                _worker.DoWork          += StartScan;
                _worker.ProgressChanged += progress.ProgressChanged;
                threadQueue.Enqueue(_worker);
            }

            SqlConnection connection = Connection.Create(host, ConnectionType.DefaultDatabase);

            foreach (var _worker in threadQueue)
            {
                _worker.RunWorkerCompleted += progress.FinishScan;
                if (!canceled)
                {
                    try {
                        connection.Open();
                        currentWorker = _worker;
                        _worker.RunWorkerAsync();
                    }
                    finally {
                        connection.Close();
                    }
                }
            }
            OnFinish();
        }