Изменение значения индикатора выполнения не работает
Я пытаюсь увеличить свой индикатор выполнения при нажатии кнопки в моем приложении c#
В настоящее время я изложил его следующим образом;
private void backupbutton_Click(object sender, EventArgs e) try { progressBar1.Value = 30; conn = new SqlConnection(connectionString); conn.Open(); sql = "BACKUP DATABASE " + combodatabase.Text + " TO Disk = '" + "C:\\Temp" + "\\" +manualbackupname.Text+"-"+ combodatabase.Text + "-" + DateTime.Now.Ticks.ToString() + ".bak'"; command = new SqlCommand(sql, conn); command.ExecuteNonQuery(); conn.Close(); conn.Dispose(); progressBar1.Value = 100; }
Проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы значение индикатора выполнения было установлено на 30 перед запуском скрипта, но он не регулирует индикатор выполнения до тех пор, пока сценарий SQL не будет завершен.
Не знаю, где я ошибаюсь, что-нибудь кто-нибудь может предложить?
Что я уже пробовал:
Я попытался переместить progressBar1.Value= 30; в разные точки раздела "try", но не смог заставить его работать.
F-ES Sitecore
Ваш код выполняется в том же потоке, что и пользовательский интерфейс, поэтому во время выполнения кода пользовательский интерфейс не будет обновляться. Что вам нужно сделать, так это запустить свой код в другом потоке в событии click, что позволит пользовательскому интерфейсу обновляться во время выполнения вашего SQL-кода. Обратите внимание, что вы не сможете получить доступ к компонентам пользовательского интерфейса из вашего нового потока, вам нужно будет использовать Invoke для обновления пользовательского интерфейса. Google для "winform new thread ui update", и вы найдете примеры того, как это сделать.