直到方法完成后才设置标签;

本文关键字:设置 标签 方法 | 更新日期: 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";
}