c# Windows窗体应用程序在出现错误后离开进程运行
本文关键字:错误 离开 进程 运行 Windows 窗体 应用程序 | 更新日期: 2023-09-27 18:06:24
我正在写我的第一个c# windows窗体应用程序,我是新的编程(我做过excel宏,几年前我曾经写过嵌入式的东西,但我只是一个帮助台的无人机试图做一些帮助我的外语学习),我基本上不知道我在做什么,谷歌搜索了很多,这通常是有效的,但我已经被困在这一整天。
我的应用程序访问数据库,只要它是正常的,一切都很好。我有try/catch/finally数据库访问,当有错误时,它显示详细信息,然后关闭应用程序-除了它仍然在任务管理器中作为后台进程,我无法找出它失败的原因。
main.cs有
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
StartupScreen MainScreen = new StartupScreen();
MainScreen.Show();
Application.Run();
Application.Exit();
}
,错误的捕获是
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error 7");
if (conn2 != null)
{
conn2.Close();
}
this.Close();
Application.Exit();
}
如果没有错误,当用户单击退出按钮或X时,它会干净地退出,但如果数据库出现故障,则必须使用任务管理器退出,这并不理想。我没有故意启动任何后台进程,Visual Studio将STAThread放在main.cs上,我猜这意味着它是一个单线程应用程序,但我几周前才开始尝试这样做,我可怜的人文学科学生的小大脑无法应对。
是尝试/捕获错误的方式来做这个在WinForm?我的入门指南是从主机应用开始的,这就是它所说的,但我的基本假设是,我错过了一些对任何有能力的人来说都很明显的东西。
你的Main
有点奇怪。标准格式更像是:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new StartupScreen());
}
您不需要调用Application.Exit()
,无论是在Main
中还是在catch
中。
在catch
中,调用this.Close()
将关闭表单,导致Application.Run
完成,这是Main
的结束,因此应用程序将退出。
还有,你是从Visual Studio运行你的程序吗?如果任务管理器中的进程名为yourapplication.vshost.exe
,那么不用担心——它是Visual Studio用来帮助调试的。