直到方法完成后才设置标签;
本文关键字:设置 标签 方法 | 更新日期: 2023-09-27 18:10:25
我有以下代码:
StatusLabel.Content = "Copying files...";
AutoCopy();
StatusLabel.Content = "Finished";
上面的代码是一个按钮点击,当我点击按钮时,我希望看到一个带有"复制文件…"的标签,然后它将通过AutoCopy方法复制文件,然后带有"完成"的标签
我没有看到"复制文件"。我只看到屏幕冻结了,然后又解冻了,显示"完成"。
我怎么能得到"复制文件显示…",只有在AutoCopy()完成后,我想显示"完成";
正如大家所说,你的UI(主)线程在文件复制操作期间被阻塞。
你需要在后台启动一个工作线程来处理所有的事情。
注意:多线程只会增加复杂性。
{
...
System.ComponentModel.BackgroundWorker bw = new System.ComponentModel.BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted);
StatusLabel.Content = "Copying files...";
bw.RunWorkerAsync();
...
}
private void DoWork(object sender, DoWorkEventArgs e)
{
AutoCopy();
}
private void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
StatusLabel.Content = "Finished";
}