當你開啟乙個子窗體,進行某項操作時,如果字窗體中有迴圈操作時。如果執行中我關閉子窗體,發現窗體雖然關閉了,但子窗體中的迴圈程式卻沒有退出,一直在 執行,並占用著系統資源,直到迴圈結束,才真正的釋放資源。儘管你在字窗體的closed事件中寫了如下**:
private void frmfiledisposal_closed(object sender, system.eventargs e)
從查msdn和從網上查資料可以知道,dispose()方法,雖然能釋放當前窗體的資源,卻不能強制結束迴圈,
要想強制突出當前程式要用:system.environment.exit(int exitcode)方法;該方法:終止當前程序並為基礎作業系統提供指定的退出**。
如下則問題解決:
private void frmfiledisposal_closed(object sender, system.eventargs e)
或者把它放到事件裡:
while (messagebox.show("退出當前窗體?", "", messageboxbuttons.yesno) == dialogresult.no)
}system.environment.exit(system.environment.exitcode);
不過以上方法,都是強制直接退出了整個程式,不只是關閉子窗體。可能還會引發某些問題,
我感覺最好方法的就是,在子窗體的closing事件中,寫迴圈退出條件,這樣就可以避免某些未知的錯誤,而且可以只關閉子窗體,並釋放子窗體占用的資源
在 windows(win32 或 .net)中關閉應用程式的正確方式是關閉它的主應用程式視窗(例如 form.close)。主訊息幫浦結束後依然存在的任何視窗都需要手動關閉。在應用程式退出之前通過呼叫 form.close 或 form.dispose 來關閉視窗是清除視窗的良好做法,但這需要您有意識地去做。我們需要記住,.net framework 的 onclosing() 是 win32 的託管版本的 wm_close,而非 wm_destroy。
C 開啟執行緒的四種方式
1.非同步委託開啟執行緒 public class program static void add int a,int b 2.通過thread類開啟執行緒 public class program 奇數執行緒 public static void setinfo1 偶數執行緒 public sta...
執行緒同步的四種方式
1 臨界區 critical section 通過對多執行緒的序列化來訪問公共資源或一段 速度快,適合控制資料訪問。優點 保證在某一時刻只有乙個執行緒能訪問資料的簡便辦法 缺點 雖然臨界區同步速度很快,但卻只能用來同步本程序內的執行緒,而不可用來同步多個程序中的執行緒。2 互斥量 mutex 為協調...
建立執行緒的四種方式
1.繼承於thread類,重寫run 方法 2.實現runable介面,實現裡面的run 方法 前兩種不用多說 3.使用 futuretask 實現有返回結果的執行緒,可以返回執行緒執行結果 public class test class mycallable implements callable...