按钮计数器 Windows表格

问题描述 投票:0回答:1

我想请教一下我的代码的修正,我想创建一个按钮,在点击按钮后,文字每秒都会改变(异步),这个代码是正确的,还是我应该用不同的方法?

  public partial class Form1 : Form
{
    public List<int> figures = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    public Form1()
    {
        InitializeComponent();
    }

    private async void button1_ClickAsync(object sender, EventArgs e)
    {
        foreach(var figure in figures)
        {
            await TimeSleeper(figure);
        }

    }
    public async Task TimeSleeper(int figure)
    {
        button1.Text = figure.ToString();
        await Task.Run(() => Thread.Sleep(1000));
        button1.Refresh();
    }    
}
c# .net winforms
1个回答
1
投票

我想,完美是在观察者的眼睛。但这并不是一个真正漂亮的方式来做:P

与其定义列表 "数字",你可以用以下方法来代替

IEnumerable.Range(1, 10)

文档。https:/docs.microsoft.comen-usdotnetapisystem.linq.enumerable.range?view=netframework-4.8。

TL:DR,它定义了一个从第一个param开始,到最后一个param结束的范围。

而不是做

Task.Run(() => Thread.Sleep(1000));

你可以把它简化为

Task.Delay(1000)

文档。https:/docs.microsoft.comen-usdotnetapisystem.threading.tasks.task.delay?view=netframework-4.8。

除此以外......就可以了吧?而且它是可读的,这才是最重要的。

© www.soinside.com 2019 - 2024. All rights reserved.