即使有一个while(true)循环,也要停止GUI

时间:2017-12-14 12:04:23

标签: c#

我无法阻止我的应用,因为我有一个while循环,所以gui不让我点击停止按钮,它看起来像:

private void btnStart_Click(object sender, EventArgs e)
{   while(true)
    { 
     //some code here
    }
}

//some methods here

private void btnStop_Click(object sender, EventArgs e)
{
 Application.Exit();
}

1 个答案:

答案 0 :(得分:6)

首先,如果您正在运行某种长时间运行的后台作业,那么您不应该在UI线程中执行此操作,因为在您声明时,您无法在UI线程中执行任何其他操作来停止循环。您需要将该工作推迟到辅助线程,计时器或UI线程上下文之外的某些内容。您可以通过Google以多种方式实现此目标。

其次,如果您需要停止循环,则将循环的while条件从true更改为其他一些可监控条件,例如:一个名为keepRunning的变量,您可以在btnStop_Click方法中设置该变量。当然,如果您在第一点采纳我的建议,那么可能还有其他方法可以阻止loop运行,例如如果它是一个计时器,那么你可以以适当的方式停止该计时器。

第三,您应该在关闭应用程序之前等待后台操作停止。