我想请教一下我的代码的修正,我想创建一个按钮,在点击按钮后,文字每秒都会改变(异步),这个代码是正确的,还是我应该用不同的方法?
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();
}
}
我想,完美是在观察者的眼睛。但这并不是一个真正漂亮的方式来做: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。
除此以外......就可以了吧?而且它是可读的,这才是最重要的。