c#从数据库中读取2个或多个表时重置进度条

本文关键字:数据库 读取 2个 | 更新日期: 2023-09-27 18:23:49

所以在我的简单程序中,我有一个进度条和一个按钮。

现在这个按钮将从我的数据库中读取2个表(例如mysql)。

只需两个简单的select语句即可读取两个不同的表。

我的问题是

如何实现进度条,使其在读取/选择第一个表后,进度条值将重置为0,并继续读取下一个表,同时再次增加进度条?

在安装某些应用程序时,此功能非常相似,其中要复制的每个文件都有单独的进度,但只使用一个进度条。

如果你能提供一些例子,那会很有帮助。

如果你能提供后台工作人员以及

c#从数据库中读取2个或多个表时重置进度条

会更好

您会有一个想法:如果你有问题,请告诉我。

async private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            await Task.Factory.StartNew(ExecuteSQL1);
            UpdateProgressBar(0);
            await Task.Factory.StartNew(ExecuteSQL2);
            UpdateProgressBar(0);            
        }
private void ExecuteSQL1()
        {
            for (int i = 0; i < 100; i++)
            {
                int progressBarValue = i;
                Task.Factory.StartNew(() => UpdateProgressBar(progressBarValue), CancellationToken.None, TaskCreationOptions.None, uiScheduler);
                Thread.Sleep(50);
            }
        }
 private void ExecuteSQL2()
        {
            for (int i = 0; i < 100; i++)
            {   
                int progressBarValue = i;
                Task.Factory.StartNew(() => UpdateProgressBar(progressBarValue), CancellationToken.None, TaskCreationOptions.None, uiScheduler);
                Thread.Sleep(100);
            }
        }
TaskScheduler uiScheduler;
        public MainWindow()
        {
            InitializeComponent();
            uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
        }

1)。当阅读数据库时,你们不知道会收到多少条目来获得确切的进度。因此,您需要来自SQL服务器的这些信息。请阅读SQL Server中的报告进度。

2) 。如何使用BackgroundWorker在DEV N00B的评论中解释得很好。为了执行两个查询,我会为每个查询创建一个单独的工作程序,它有自己的DoWork函数,并以这种方式调用它们

private void worker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
  this.progressBar1.Value = 0;
  Thread.Sleep(1000);
  if (worker2.IsBusy != true)
  {
    worker2.RunWorkerAsync();
  }
}