我想制作一个每0.1秒更新textBox中的文本的表单应用程序
所以我做到了:

private void Start_Stop_Click(object sender, EventArgs e)
{
    double x;
    while (true)
    {
        x = x + 0.00522222222222222222222222222222;
        y.Text = x.ToString();
        Thread.Sleep(100);
    }
}


但是当我运行程序时,它冻结了
(我在控制台应用程序中几乎编写了确切的程序,并且运行平稳)。

最佳答案

尽管意义不大,但您可以使用Task.Delay实现所需的功能。它将异步地将控制权交还给UI消息循环(内部,它使用计时器):

private bool shouldIterate;
private async void StartStopClick(object sender, EventArgs e)
{
    if (shouldIterate)
    {
        shouldIterate = false;
        return;
    }

    shouldIterate = true;
    while (shouldIterate)
    {
        x = x + 0.00522222222222222222222222222222;
        y.Text = x.ToString();
        await Task.Delay(100);
    }
}


尽管我建议您将时间间隔设置为更合理的时间。

关于c# - 如何运行while循环?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31500796/

10-11 04:49