Есть достаточно сложный отчет, который выкачивает из базы данных кучу значений обрабатывает их и выгружает результат в Excel.
Задача - сделать прогресс бар, чтобы пользователь видел, что программа не зависла.
Делаем следующим образом:
Создаем форму Progress, на нее кидаем label типа "Ожидайте выполнения запроса". Затем кидаем ProgressBar и меняем свойство Style на Marquee.Почему так - тк мы не знаем сколько конкретно будет данных в запросе.
Кидаем на основную форму компонент backgroundWorker.
Создаем обработчик события -
private void button1_Click(object sender, EventArgs e)
{
Progress Progress = new Progress();
Progress.ShowDialog();
backgroundWorker1.RunWorkerAsync();
}
Затем делаем сообственно сам запрос
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
//усиленно что-то делает
}
И на конец закрываем окно с ProgressBar
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Progress.ActiveForm.Close();
}
Комментариев нет:
Отправить комментарий