为什么在方法调用之间看不到Label的文本更改?

art*_*rti 0 c# methods

我有一个包含以下代码的按钮:

private void install_btn_Click(object sender, RoutedEventArgs e)
{
    installcover.Visibility = System.Windows.Visibility.Visible;
    loading_text.Visibility = System.Windows.Visibility.Visible;
    back_btn.Visibility = System.Windows.Visibility.Hidden;
    install_btn.Visibility = System.Windows.Visibility.Hidden;

    loading_text.Text = "Connecting to server...";
    mapDriveX();

    loading_text.Text = "Copying test tools from server...";
    CopyTestTools();

    loading_text.Text = "Installing Drivers...";
    installDrivers();

    loading_text.Text = "Disconnecting...";
    unMapDriveX();

    loading_text.Text = "Restarting...";
    Process.Start("shutdown", "/r /t 10");
}
Run Code Online (Sandbox Code Playgroud)

看起来它试图同时启动所有这些.

即使我放在线Thread.Sleep(5000);之间,它仍然没有等待.

它不会一个接一个地改变文本; 我在最后看到的只是命令的结果:

 loading_text.Text = "Restarting...";
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 8

不,这是预期的行为.刷新UI是通过paint事件完成的; 在方法完成之前,它无法处理paint事件.如果你想在后台做的事情,看看之类的东西BackgroundWorker,ThreadPoolTask.请记住,在工作人员上完成的任何工作都无法与UI通信 - 并且需要通过Control.Invoke/ 特别请求访问Control.BeginInvoke.