代码之家  ›  专栏  ›  技术社区  ›  Error 404

即使存在while(true)循环,也要停止GUI

c#
  •  1
  • Error 404  · 技术社区  · 6 年前

    我无法停止我的应用程序,因为我有一个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 回复  |  直到 6 年前
        1
  •  6
  •   LordWilmore    6 年前

    首先,如果您正在运行某种长时间运行的后台作业,那么您不应该在UI线程中执行此操作,因为正如您所述,您无法在UI线程中执行任何其他操作来停止循环。您需要将该工作推迟到辅助线程、计时器或UI线程上下文之外的其他线程。你可以用谷歌搜索许多不同的方法来实现这一点。

    其次,如果需要停止循环,请更改循环的while条件 true 到其他一些可监视的条件,例如,一个名为 keepRunning ,然后可以在 btnStop_Click 方法当然,如果你在第一点上采纳了我的建议,那么可能还有其他方法来阻止 loop 例如,如果是计时器,则可以以适当的方式停止计时器。

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