Как реализовать панель выполнения и фонового рабочего для вызовов базы данных в С#?
У меня есть несколько методов, которые обрабатывают большие объемы данных. Это относительно длительные операции, поэтому я хочу реализовать индикатор выполнения, чтобы пользователь знал, что что-то происходит на самом деле.
Я думал о том, чтобы использовать индикатор выполнения или метку полосы состояния, но поскольку существует один поток пользовательского интерфейса, поток, в котором выполняются методы обработки базы данных, элементы управления пользовательского интерфейса не обновляются, что делает индикатор выполнения или метку полосы состояния бесполезными мне.
Я уже видел некоторые примеры, но они имеют дело с for-loops, например:
for(int i = 0; i < count; i++)
{
System.Threading.Thread.Sleep(70);
// ... do analysis ...
bgWorker.ReportProgress((100 * i) / count);
}
private void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = Math.Min(e.ProgressPercentage, 100);
}
Я ищу лучшие примеры.