我在下面写下简单的代码。我想让这件事发生: 1.单击按钮。 2.显示第一个字符串。 3.等待3秒钟。 4.显示第二个字符串。 但是使用这段代码,我只能在点击按钮后等待3秒后看到第二个字符串。我看不到第一个字符串。有没有办法让这种情况发生?
namespace clicktest
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
this.textBox.Text = "Show 1st time";
Thread.Sleep(3000);
this.textBox.Text = "Show 2nd time";
}
}
}
答案 0 :(得分:1)
阻止线程(例如在使用Thread.Sleep
时)在WPF中阻止GUI刷新。
相反,您可以使用不会阻止该帖子的await Task.Delay
:
private async void button_Click(object sender, RoutedEventArgs e)
{
this.textBox.Text = "Show 1st time";
await Task.Delay(3000);
this.textBox.Text = "Show 2nd time";
}
答案 1 :(得分:1)
正如@Alexander Higgins所说,您可以使用 等待Task.Delay ,但您必须将 async 类型添加到您的方法中,像这样:
private async void button_Click(object sender, RoutedEventArgs e)
{
this.textBox.Text = "Show 1st time";
await Task.Delay(3000);
this.textBox.Text = "Show 2nd time";
}