public void StartWorker() {
m_worker_thread = new BackgroundWorker();
m_worker_thread.WorkerSupportsCancellation = true;
m_worker_thread.DoWork += new DoWorkEventHandler(this.DoWork);
m_worker_thread.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.Completed);
m_worker_thread.WorkerReportsProgress = true;
m_worker_thread.ProgressChanged += new ProgressChangedEventHandler(this.ProgressChanged);
stateUpdates += new ReloadStateUpdate(onStateUpdate);
m_worker_thread.RunWorkerAsync();
}