当我点击它时我有一个按钮它会将文本块中的数字增加一个。 但我想用几毫秒的等待来显示增量。
XAML
<TextBlock Name="DisplayTextBlock" FontSize="50" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Button Name="CountingButton" Height="80" Width="150" HorizontalAlignment="Center" VerticalAlignment="Bottom" Click="CountingButton_Click"/>
C#
int i = 0;
private void CountingButton_Click(object sender, RoutedEventArgs e)
{
do
{
i++;
DisplayTextBlock.Text = i.ToString();
}
while(//something is on)
}
所以我该如何添加等待......
答案 0 :(得分:6)
将async
关键字添加到方法声明中。并添加Task.Delay
。
private async void CountingButton_Click(object sender, RoutedEventArgs e)
{
i++;
await Task.Delay(200);
DisplayTestBlock.Text = i.ToString();
}
答案 1 :(得分:2)
看到你想无限期地更新它,我已经改变了我之前使用计时器的答案。我的解决方案是切换启用状态,然后单击按钮以进行说明。请考虑以下事项:
DispatcherTimer _timer;
private int i = 0;
public bool SomethingIsOn { get; private set; } = true;
private void Button_Click(object sender, RoutedEventArgs e)
{
if (_timer == null && SomethingIsOn)
{
_timer = new DispatcherTimer()
{
Interval = TimeSpan.FromMilliseconds(300)
};
_timer.Tick += _timer_Tick;
_timer.Start();
}
else if(_timer != null)
{
_timer.Stop();
((Button)sender).IsEnabled = false;
}
}
private void _timer_Tick(object sender, object e)
{
if (SomethingIsOn)
{
i++;
DisplayTextBlock.Text = i.ToString();
}
}
在正确的解决方案中,您可能希望在第一次单击按钮时禁用该按钮,以避免用户多次单击该按钮。
<强>更新强> 我现在正在使用UWP中提供的DispatcherTimer,更容易使用。
答案 2 :(得分:-1)
我认为您正在寻找的是睡眠:
System.Threading.Thread.Sleep(x);
如果不是延迟也会起作用:
await System.Threading.Tasks.Delay(x);