-3

我是 C# 的新手,并创建了一个通过 Visual Studio 2010 运行的基本程序。当窗口关闭时,程序停止。但是,在 IDE 回到编辑模式之前会有几秒钟的延迟。关闭窗口后如何立即结束程序?

private void button1_Click(object sender, EventArgs e){
    While (Visible) {
        for (int c = 0; c < 254) {
            this.BackColor = Color.FromArgb(c, 255 - c, c);
            Application.DoEvents();
            System.Threading.Thread.Sleep(3);
        }
        for (int c = 254; c >= 0) {
            this.BackColor = Color.FromArgb(c, 255 - c, c);
            Application.DoEvents();
            System.Threading.Thread.Sleep(3);
        }
    }
}

我试过删除“System.Threading.Thread.Sleep(3);” 来自循环,但这仍然无助于解决问题。我也能够在多台机器上重现它。任何想法为什么会发生这种情况?

4

5 回答 5

1

当 Visual Studio 调试程序时,它通过代理应用程序执行程序。程序结束后,代理也必须停止,而且 Visual Studio 必须返回其编辑模式。这种转变不是立即的,很可能是您遇到的延迟。

您可以尝试在发布模式下构建程序并在不调试的情况下运行它。它应该能够快速关闭。

于 2012-07-14T18:54:55.870 回答
0

试试这个:

Application.Exit();

我怀疑是否有更快的方法。

于 2012-07-14T18:29:40.210 回答
0

要关闭正在运行的应用程序(无论哪个表单处于活动状态),您可以使用:

System.Environment.Exit();

您可以将其添加到表单的 onClose 事件中

于 2012-07-14T18:53:05.257 回答
0

发生延迟是因为 for 循环需要在 while 循环检查 Visible 是否仍然为真之前完成。我可以通过在每个 for 循环中的条件测试中添加&& Visible == true来修复它。这样,只要 Visible 变为假,循环就会结束。

于 2012-07-15T05:27:54.737 回答
-1

只需使用Ctrl.+运行程序F5

于 2012-07-14T18:30:37.523 回答