У меня есть длинный метод, выполнение которого занимает немного времени.Я хотел бы развлечь пользователя, поэтому я создал индикатор выполнения и метку.Я хотел бы, чтобы этот ярлык изменился, пока система выполняет прогресс.Я смотрел на Application.DoEvents (), но кажется, что это неправильный путь.Это приложение довольно простое, просто проект и ничего профессионального.Все, что делает это приложение - отправляет файл клиенту и вставляет данные в базу данных.
У меня есть одна метка (помимо метки успеха и ошибок), которую я хотел бы постоянно обновлять вместе с индикатором выполнения.Есть идеи или советы, как это сделать?Будет ли Application.DoEvents () приемлемым в этой ситуации?Или есть простой способ обновить текст.Я использую C #, asp.net и System.Web.UI.Page.Любая помощь или указание мне в правильном направлении будет принята с благодарностью.
protected void Button_Click(object sender, EventArgs e)
{
PutFTPButton.Enabled = false;
Thread.Sleep(3000);
Button btn = (Button)sender;
KaplanFTP.BatchFiles bf = new KaplanFTP.BatchFiles();
KaplanFTP.Transmit transmit = new KaplanFTP.Transmit();
//label text change here
if (btn.ID == PutFTPButton.ID)
{
//bf.ReadyFilesForTransmission();
DirectoryInfo dir = new DirectoryInfo(@"C:\Kaplan");
FileInfo[] BatchFiles = bf.GetBatchFiles(dir);
bool result = transmit.UploadBatchFilesToFTP(BatchFiles);
//label text change here
if (!result)
{
ErrorLabel.Text += KaplanFTP.errorMsg;
return;
}
bf.InsertBatchDataIntoDatabase("CTL");
bf.InsertBatchDataIntoDatabase("HDR");
bf.InsertBatchDataIntoDatabase("DET");
bf.InsertBatchDataIntoDatabase("NTS");
List<FileInfo> allfiles = BatchFiles.ToList<FileInfo>();
allfiles.AddRange(dir.GetFiles("*.txt"));
bf.MoveFiles(allfiles);
//label text change here
foreach (string order in bf.OrdersSent)
{
OrdersSentDiv.Controls.Add(new LiteralControl(order + "<br />"));
}
//lblWait.Visible = false;
OrdersSentDiv.Visible = true;
OrdersInfoDiv.Visible = false;
SuccessLabel.Visible = true;
NoBatchesToProcessLbl.Visible = true;
BatchesToProcessLbl.Visible = false;
PutFTPButton.Enabled = false;
BatchesCreatedLbl.Text = int.Parse(NextBatchNum).ToString();
Thread.Sleep(20000);
if (KaplanFTP.errorMsg.Length != 0)
{
ErrorLabel.Visible = true;
SuccessLabel.Visible = false;
ErrorLabel.Text = KaplanFTP.errorMsg;
}
}
}