我这里有一个执行时间较长的方法,我想要让用户在等待时保持娱乐性,所以我创建了一个进度条和一个标签。我希望在系统执行进度时标签内容也能实时更新。我一直在研究Application.DoEvents(),但似乎并不是正确的做法。这个应用程序非常简单,只是一个项目而已,没有什么专业性质。所有这个应用程序做的事情就是将文件发送给客户端并将数据插入到数据库中。
除了成功和错误标签外,我只有一个标签,我希望在进度条旁边始终更新它。有什么想法或提示可以做到这一点吗?在这种情况下,Application.DoEvents()是否可接受?还是有一种简单的方法来更新文本?我正在使用C#、asp.net和System.Web.UI.Page。任何帮助或指向正确方向的建议都将不胜感激。
除了成功和错误标签外,我只有一个标签,我希望在进度条旁边始终更新它。有什么想法或提示可以做到这一点吗?在这种情况下,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;
}
}
}