2012-07-14 139 views
-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);”从循环,但仍然没有帮助解决这个问题。我也能够在多台机器上重现这一点。任何想法为什么会发生这种情况?

+0

您提到的延迟并不少见。你能解释一下你试图完成什么 - 为什么你想减少延迟? – Mendhak 2012-07-14 18:29:17

+0

这个while循环执行的地方在哪里?为什么? – 2012-07-14 18:37:45

+4

在嵌套for()循环完成之前,程序无法停止。你正在编写危险的代码,一定要拿起一本关于winforms编程的书。 – 2012-07-14 18:37:59

回答

0

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

0

试试这个:

Application.Exit(); 

我怀疑有一种更快的方式。

+0

从给你带来'ERROR_SUCCESS':['Environment.FailFast'](http://msdn.microsoft.com/zh-cn/library/ms131100.aspx) – HABO 2012-07-14 20:20:12

-1

只需运行程序Ctrl。 + F5

0

要关闭正在运行的应用程序(无论其形式是有效)使用:

System.Environment.Exit(); 

,你可以添加给表单的OnClose事件

1

当Visual Studio正在调试它通过代理应用程序执行程序的程序。程序结束后,代理也必须停止,再加上visual studio必须回到其编辑模式。这种转变并非立竿见影,而且很可能是您遇到的延迟。

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

相关问题