Я пытаюсь создать индикатор выполнения, который отображается при нажатии кнопки расчета. И выполняется до тех пор, пока выполнение не завершит процесс. Я использую фона для операции. И индикатор выполнения - это просто шага, поэтому, если процесс заканчивается, я хочу разорвать ложное видимое свойство.Индикатор выполнения при выполнении команды sql с использованием фона рабочего
вот Initialize
backgroundworker1 = new System.ComponentModel.BackgroundWorker();
backgroundworker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
так первый, когда кнопка высчитывает щелкнул:
private void buttonCalculate_Click(object sender, EventArgs e)
{
//execute the background worker
this.backgroundworker1.RunWorkerAsync();
while (this.backgroundworker1.IsBusy)
{
progressBar1.Visible=true;
Application.DoEvents();
}
}
Вот событие backgroundworker1_DoWork
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
connection = new MySqlConnection(prop.connectionString);
string query = "Call telephelyi_2013()";
if (this.OpenConnection() == true)
{
MySqlCommand cmd = new MySqlCommand();
cmd = connection.CreateCommand();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
}
}
и, наконец, когда операция comleeted это shuld сделайте это
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
progressBar1.Visible = false;
MessageBox.Show("Számítás befejzve!");
}
Но в конце концов, когда я запускаю программу и нажимаю кнопку «Расчет», индикатор выполнения отображается и только перемещение никогда не заканчивается. И я также вижу, что компьютер вычисляет какое-то время и после остановок, но я никогда не получаю это сообщение конца!
В чем проблема?
его все еще никогда не ступайте в фоновый режимWorker1_RunWorkerУдаленная задача. Но я вижу, что программа делает то, что она должна. Как работает фон, знаете, что программа закончена или нет? – balage90
@ balage90 Фоновый работник написан для запуска события, когда событие DoWork завершается. – Servy