我有兩種形式:signin
和control_panel
。完成登錄後,我通過this.Hide()
函數隱藏此表單,同時我正在創建control_panel
表單的新對象,並通過newobj.Show();
顯示它。但是當我直接關閉control_panel
窗體時,我看到第一窗體線程仍在運行。我正在通過stop_debugging按鈕關閉它。我將如何同時關閉每個線程或整個程序退出。線程仍在C#中運行
2
A
回答
3
您的第一個表單的線程仍在運行,因爲您只撥打this.Hide
。所做的只是隱藏的形式;它沒有關閉它。相反,您需要使用this.Close
,這將關閉您的原始形式。
如果您想確保您的整個應用程序退出,並且在處理過程中關閉了可能仍然打開的任何表單,則可以使用表單代碼中任意位置的Application.Exit
方法。
編輯:爲了擴大對我最後的評論,你可能希望這樣的事情在你的Program.cs
文件:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
SignInForm frmSignIn = new SignInForm();
if (frmSignIn.ShowDialog() == DialogResult.Yes)
{
//If the sign-in completed successfully, show the main form
//(otherwise, the application will quit because the sign-in failed)
Application.Run(new ControlPanelForm());
}
}
}
0
創建CONTROL_PANEL的CONTROL_PANEL表單屬性窗口FormClosed事件,並寫入以下line as
private void control_panel_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
相關問題
- 1. Python:線程仍在運行
- 2. 進程仍在運行C++
- 3. Observable仍然在UI線程上運行
- 4. 線路仍在運行?
- 5. C#Winforms:BeginInvoke仍然在同一個線程上運行?
- 6. 運行的線程在C#
- 7. 運行C++線程()
- 8. Java線程:找出哪些線程仍在運行
- 9. 在``C``線程池中運行'POSIX`線程在``C``線程池中運行`函數指針`
- 10. 跨線程運行在C#中無效
- 11. 在C++類中運行線程
- 12. C++線程運行時間
- 13. 運行兩個線程[c]
- 14. 的Windows線程(C運行時,並行線程,的std ::線程)
- 15. win32ole過程仍然在ruby中運行
- 16. 在JavaFX中運行線程
- 17. 在gtest中運行線程
- 18. 在vb.net中運行線程
- 19. PyQt5 - QThread:在線程仍在運行時被銷燬
- 20. 在線程仍在運行時返回異步(MVC .Net)
- 21. C#WPF運行在新線程
- 22. C++運行在二級性病線程
- 23. C#在多線程上運行IronPython
- 24. C++ POCO運行在線程問題
- 25. 如何檢查進程是否仍在c內核中運行?
- 26. C#退出使用()塊,其線程仍在作用域對象上運行
- 27. C# - 創建新控件的線程仍在運行時的閉合表單
- 28. 爲什麼我的線程仍在運行?
- 29. 判斷'elapsed'事件線程是否仍在運行?
- 30. PyQt的的QThread:被毀壞,而線程仍在運行
當我通過thhis.close()方法關閉窗體時,我的第二個窗體正在顯示。我不明白爲什麼? – 2010-11-25 10:38:24
我假設你是指當你關閉第一個表單時,你的應用程序退出了?這是因爲在`Program.cs`文件中,你有'Application.Run`設置爲你的第一種形式。每當第一個窗體關閉時,消息循環結束並退出應用程序。我強烈建議您將啓動邏輯(即顯示和處理登錄表單)放在Program.cs文件中,而不是將登錄表單設置爲啓動表單,因爲您計劃在沒有應用程序退出。 – 2010-11-25 10:43:42