2012-07-14 113 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必須回到其編輯模式。這種轉變並非立竿見影,而且很可能是您遇到的延遲。

您可以嘗試在發佈模式下編譯程序並在不進行調試的情況下運行它。它應該能夠很快關閉。