延迟增量数(C#)

时间:2017-11-14 13:07:28

标签: c# uwp

当我点击它时我有一个按钮它会将文本块中的数字增加一个。 但我想用几毫秒的等待来显示增量。

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)
}

所以我该如何添加等待......

3 个答案:

答案 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);