BackgroundWorker показывает прогресс во время выполнения метода - PullRequest
0 голосов
/ 06 марта 2020

У меня есть BackgroundWorker и Progressbar. В событии DoWork фонового работника я выполняю метод, выполнение которого может занять 2-5 секунд, но иногда может занять и больше времени. Я хочу показать прогресс в строке прогресса, чтобы указать, что что-то еще выполняется в фоновом режиме. Большинство примеров, которые я нашел в Интернете, являются задачами из всех oop, но, как я уже сказал, мой DoWork выполняет длительный процесс, и у меня нет возможности определить процент прогресса. Пожалуйста помоги. Вот мой код.

 private  void MyForm_Load(object sender, EventArgs e)
    {
        Shown += new EventHandler(MyForm_Shown);
        // To report progress from the background worker we need to set this property
        backgroundWorker1.WorkerReportsProgress = true;
        // This event will be raised on the worker thread when the worker starts
        backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
        // This event will be raised when we call ReportProgress
        backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
        backgroundWorker1.RunWorkerCompleted += BackgroundWorker1_RunWorkerCompleted;

    }

 private void MyForm_Shown(object sender, EventArgs e)
    {
        // Start the background worker
        backgroundWorker1.RunWorkerAsync();
    }

 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        GetData();//this method may take 2-5 seconds to complete. I want to show progess in the progressbar while method execution is not yet finished.
    }

 private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        // The progress percentage is a property of e
        progressBar1.Value = e.ProgressPercentage;
    }

 private void BackgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
       //Perform something on complete
    }
...