[英]How would I make a messageBox not show within a time limit of a button click? c#
[英]How to make C# button click only one time and make a textbox show two result?
我写下面的简单代码。 我想做到这一点: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";
}
}
}
阻塞线程(例如在WPF中使用Thread.Sleep
时)会阻止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";
}
正如@Alexander Higgins所说的,您可以使用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";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.