1. 程式人生 > >c# 強制退出程式

c# 強制退出程式

1.強制退出WinForm程式之Application.Exit和Environment.Eixt

MSDN和從網上查資料才得知,Dispose()方法,雖然能釋放當前窗體的資源,卻不能強制結束迴圈,
要想強制突出當前程式要用:System.Environment.Exit(int exitcode)方法;該方法:終止當前程序併為基礎作業系統提供指定的退出程式碼。

如下則問題解決:
   private void frmFileDisposal_Closed(object sender, System.EventArgs e)
     {         
         System.Environment.Exit(System.Environment.ExitCode);   
         this.Dispose();
         this.Close();
     }

或者把它放到事件裡:
   while (MessageBox.Show("退出當前窗體?", "", MessageBoxButtons.YesNo) ==   DialogResult.No)
    {
       for(int j=1; j<=i; j++) 
      {
          listBox1.Items.Add(j);
       }       
   }
   System.Environment.Exit(System.Environment.ExitCode);  

2. 還有一種方法: System.Threading.Thread.CurrentThread.Abort();
                          或者          Process.GetCurrentProcess().Kill() 
                           或者        Application.ExitThread();
                           或者        Application.ExitThread()

不過以上方法,都是強制直接退出了整個程式,不只是關閉子窗體。可能還會引發某些問題,
我感覺最好方法的就是,在子窗體的Closing事件中,寫迴圈退出條件,這樣就可以避免某些未知的錯誤,而且可以只關閉子窗體,並釋放子窗體佔用的資源.

3. Application.Exit(); 方法停止在所有執行緒上執行的所有訊息迴圈,並關閉應用程式的所有視窗

Application.Exit 是一種強行退出方式,就像 Win32 的 PostQuitMessage()。它意味著放棄所有訊息泵,展開呼叫堆疊,並將執行返回給系統。


在 Windows(Win32 或 .NET)中關閉應用程式的正確方式是關閉它的主應用程式視窗(例如 Form.Close)。主訊息泵結束後依然存在的任何視窗都需要手動關閉。在應用程式退出之前通過呼叫 Form.Close 或 Form.Dispose 來關閉視窗是清除視窗的良好做法,但這需要您有意識地去做。我們需要記住,.NET Framework 的 OnClosing() 是 Win32 的託管版本的 WM_CLOSE,而非 WM_DESTROY。

另外,如果您使用 form.Close(),通過處理 OnClosing 或 OnClosed 事件,就可以讓您的應用程式清理內容、關閉檔案等。如果您通過 Application.Exit 強行退出應用程式,就無法呼叫這些事件。

相關推薦

c# 強制退出程式

1.強制退出WinForm程式之Application.Exit和Environment.EixtMSDN和從網上查資料才得知,Dispose()方法,雖然能釋放當前窗體的資源,卻不能強制結束迴圈,要想強制突出當前程式要用:System.Environment.Exit(int exitcode)方法;該方法

VC快速強制退出程式方法

轉載自:http://shashanzhao.com/archives/791.html 首先為什麼要快速強制退出應用程式. 1.想快點結束程式,關閉自己,節約時間 2.正常退出時(或者關閉視窗時)崩潰,出來一個對話方塊 “XXX已停止工作,Windows 正在檢查該問題的解決方案

Mac小技巧 強制退出程式的六種方法

                        原帖地址: ht

C#.NET常見問題(FAQ)-如何強制退出進程

process size 如何 常見 http pro kill 教學視頻 強制退出 可以使用Process.Kill方法,但是有時候執行完了該進程還在,要等一會才會自動關掉 ? ?更多教學視頻和資料下載,歡迎關註以下信息: 我的優酷空間: http:/

C#中如何退出程式

 c#退出應用程式辦法:   1、Application.Exit();//好像只在主執行緒可以起作用,而且當有執行緒,或是阻塞方法的情況下,很容易失靈。   2、Application.ExitThread();//退出當前執行緒上的訊息迴圈,並關閉該執行緒上的所有視窗, 也會失靈。   

golang捕獲ctrl+c退出程式

在golang當中如何捕獲ctrl+c命令,讓程式有序的的退出? 首先測試一段golang程式碼,捕獲SIGINT和SIGKILL c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt, os.

c#中退出WinForm程式包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0);

本文例項總結了C#中WinForm程式退出方法技巧。分享給大家供大家參考。具體分析如下: 在c#中退出WinForm程式包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0

程式無響應 強制退出Mac程式的六種方法

文章轉自:http://tech.sina.com.cn/pc/2012-03-13/02102060513.shtml 電腦用的時間長了,難免會遇到程式卡死,風扇狂轉不停,沒有任何響應等情況。可能是由於程式衝突、快取不足或者一些bug等情況導致,這個時候我們就需要強制

C# winform刪除執行緒和退出程式方法

退出C# WinForm程式有很多方法,如: this.Close(); Application.Exit(); Application.ExitThread(); System.Environment.Exit(0); 區別在於: 1.this.C

C#中WinForm程式退出方法技巧總結

在c#中退出WinForm程式包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等他們各自的方法不一樣,下面我們就來詳細介紹一下。 1.this.Close()

C# 執行一個程式並且等待其退出

//獲取一個已中斷程序的退出程式碼,非零表示成功,零表示失敗。         //引數hProcess,想獲取退出程式碼的一個程序的控制代碼,引數lpExitCode,用於裝載程序退出程式碼的一個長整數變數。         [DllImport("Kernel32.dll

C#.NET常見問題(FAQ)-如何強制退出程序

可以使用Process.Kill方法,但是有時候執行完了該程序還在,要等一會才會自動關掉 更多教學視訊和資料下載,歡迎關注以下資訊: 我的優酷空間: 我的線上論壇: 問題交流: QQ:910358960

C#開發WinForm窗體程式時,如何在子窗體中關閉視窗時並退出程式

       在開發C#WinForm窗體程式時,有沒有遇到過,在執行或者除錯程式的過程中,明明關閉了子視窗,程式並沒有退出來, 我們編輯不了,要手動關閉停止除錯或全部中斷等操作後,程式才退出來,這樣會不會覺得挺煩的? 我就簡單的分享一下我的經驗: 1、首先我們開啟子視窗的

Jira強制退出時(如意外停電)再啟動報Locked錯誤的幾個解決辦法

mode ogr pro 推薦 dev 重啟 如意 文件的 mod 方案1.先刪掉 jira_home下的.jira-home.lock,再重啟 jira_home指你的Jira安裝目錄,如D:/Program Files/Atlassian/Application

C++使用libcurl做HttpClient(業務觀摩,用C++封裝過程式代碼,post和get的數據,最好url編碼,否則+會變成空格)good

com 如果 msvc 是否 out tle source rac 無需 當使用C++做HTTP客戶端時,目前通用的做法就是使用libcurl。其官方網站的地址是http://curl.haxx.se/,該網站主要提供了Curl和libcurl。Curl是命令行

c#程序退出

env sans bsp ans ron getc ntp get ack Environment.Exit(0);Process.GetCurrentProcess().Kill(); c#程序退出

iOS 強制退出程序APP代碼

oid 進程 ans condition turn syntax wifi void exit 1、先po代碼 // 退出程序 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2

[筆記]c++強制類型轉換

c++1、強制類型轉換的四個參數 static_cast用於基本類型間的轉換不能用於基本類型指針將的轉換用於有繼承關系類對象間的轉換和類指針之間的轉換 const_cast用於去除變量的只讀屬性強制轉換目標類型必須是指針和引用 reinterpret_cast用於指針類型間的強制轉換用於整數和指針類型間的強

(已解決)c# 客戶端程式訪問oracle報錯:ORA-12154: TNS: 無法處理服務名

錯誤:ORA-12154: TNS: 無法處理服務名 這個錯誤大家在百度上一搜一大把,但是我出現這個錯誤的原因跟百度不太一樣,我的客戶端程式在不同的目錄可以正常執行,但在其中1個目錄就是要出錯,因此我想到是目錄路徑中出了問題,既然是路徑那就只能是資料夾名有什麼特殊之處導致不能執行,後來發現不能執

C#Assembly、程式集、裝配件、名稱空間以及型別的關係

關於Assembly、程式集、裝配件的關係   首先有三個概念:Assembly、程式集、裝配件   之前差了好多的帖子,都是在講定義的時候用Assembly,然後又開始講解程式集的理解,話鋒一轉就有開始講裝配件,一直搞不明白如果Assembly就是裝配件的話,那程式