在Windows窗体应用程序C#中使用计时器运行特定时间的循环

Ati*_*tif 0 c# timer

我试图在特定的时间内重复进行一些计算(time变量并由用户提供).

我尝试在visual studio中使用Windows窗体应用程序工具箱中提供的计时器,但似乎存在问题.当我启动计时器并将变量time与while循环关联时,程序会卡住; 的time变量被递减计时器的各记号事件,我需要只要时间大于0运行while循环.

private void timer1_Tick(object sender, EventArgs e)
    {
        if (time == 0)
            timer1.Stop();

        else
        {
            time--;
            textBoxTime.Text = time.ToString();
        }

    }
Run Code Online (Sandbox Code Playgroud)

这是阻止程序的while循环

while (time>0)
{
   computations();
}
Run Code Online (Sandbox Code Playgroud)

Eri*_* J. 5

我试图在特定的时间内重复进行一些计算,时间是可变的并由用户提供.

我不建议使用计时器来计算滴答时间,而是建议你在循环开始时注意循环,检查每次循环迭代的当前时间,看看它是否运行得足够长.

这是阻止程序的while循环

据推测,您正在UI线程上执行计算.这将阻止处理任何UI消息,包括计时器滴答,从而使应用程序无响应.

启动一个单独的线程来执行实际计算.BackgroundWorker是从WinForms执行此操作的常用方法,但有许多方法.