做一个 BackgroundWorker 这样 ProgressBar 就可以工作了
Make a BackgroundWorker so ProgressBar will work
我有一个带有进度条的程序,它在程序完成之前不会更新。我做了一些挖掘,发现我需要做一个后台工作人员,以便它会在我的 while 循环运行时更新。从显示的示例中,我只是没有得到我应该做的事情。有人可以向我解释如何设置它以及它在做什么吗?
int progressBar;
private void button3_Click(object sender, EventArgs e)
{
try
{
while (y < PriDID.Count)
{
cmd.CommandText = "SELECT COUNT(*) FROM Accounts WHERE ACCT='" + ACCT[y] + "'";
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count < 1)
{
progressBar = (y / SDM_ACCT.Count) * 100;
progressBar1.Value = progressBar;
progressBar1.Update();
Console.WriteLine(SDM_ACCT[y - 1]);
cmd.CommandText = @"INSERT INTO Accounts(SDM_ACCT,Description)
values(" + "'" + ACCT[y] + "'," + "'" + Comment[y] + ")";
cmd.ExecuteNonQuery();
y++;
recordCount++;
}
else
{
y++;
}
MessageBox.Show(recordCount + " unique records successfully loaded to the Database.");
}
}
catch (Exception ex)
{
MessageBox.Show("Exception: " + ex.Message + " Please make sure you have selected a valid path for your CSV and database.");
}
}
我想如果你看看这个例子你就会知道如何去做。我编造了一些值并将变量命名为与您相同的名称。如果你知道 while 循环到 运行 需要多长时间,你可以声明一个 DoWork only write this ---> progressBarWorker.DoWork+= and double tab。你会得到一个 DoWork 事件处理程序。在该事件处理程序中,您可以创建一个 for 循环)
for(int i = 0; i < 100; i++)
{
Thread.Delay(100);
progressBarWorker.ReportProgress(i);
}
然后放ProgressBarWorker.RunWorkerAsync();作为 button3 事件处理程序中的第一件事。
A BackroundWorker Example I made for you
我有一个带有进度条的程序,它在程序完成之前不会更新。我做了一些挖掘,发现我需要做一个后台工作人员,以便它会在我的 while 循环运行时更新。从显示的示例中,我只是没有得到我应该做的事情。有人可以向我解释如何设置它以及它在做什么吗?
int progressBar;
private void button3_Click(object sender, EventArgs e)
{
try
{
while (y < PriDID.Count)
{
cmd.CommandText = "SELECT COUNT(*) FROM Accounts WHERE ACCT='" + ACCT[y] + "'";
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count < 1)
{
progressBar = (y / SDM_ACCT.Count) * 100;
progressBar1.Value = progressBar;
progressBar1.Update();
Console.WriteLine(SDM_ACCT[y - 1]);
cmd.CommandText = @"INSERT INTO Accounts(SDM_ACCT,Description)
values(" + "'" + ACCT[y] + "'," + "'" + Comment[y] + ")";
cmd.ExecuteNonQuery();
y++;
recordCount++;
}
else
{
y++;
}
MessageBox.Show(recordCount + " unique records successfully loaded to the Database.");
}
}
catch (Exception ex)
{
MessageBox.Show("Exception: " + ex.Message + " Please make sure you have selected a valid path for your CSV and database.");
}
}
我想如果你看看这个例子你就会知道如何去做。我编造了一些值并将变量命名为与您相同的名称。如果你知道 while 循环到 运行 需要多长时间,你可以声明一个 DoWork only write this ---> progressBarWorker.DoWork+= and double tab。你会得到一个 DoWork 事件处理程序。在该事件处理程序中,您可以创建一个 for 循环)
for(int i = 0; i < 100; i++)
{
Thread.Delay(100);
progressBarWorker.ReportProgress(i);
}
然后放ProgressBarWorker.RunWorkerAsync();作为 button3 事件处理程序中的第一件事。
A BackroundWorker Example I made for you