Program.cs代码详细解释 📅 2026/7/3 10:39:05 带详细注释的 Program.cs 完整代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Windows.Forms;namespaceSFP模块终测检查软件{/// summary/// 程序入口类/// 整个程序从这里开始执行相当于大门/// /summarystaticclassProgram{/// summary/// 互斥量Mutex/// 作用防止同一个程序同时运行多个实例/// 原理程序启动时创建一把锁如果锁已经存在说明已经有程序在运行了/// /summaryprivatestaticSystem.Threading.Mutexmutex;/// summary/// 应用程序的主入口点/// 程序启动后第一个执行的函数/// /summary[STAThread]// 特性表示程序使用单线程单元模型WinForms必须加这个staticvoidMain(){// // 第一步初始化界面样式// // 启用 Windows 视觉样式// 作用让按钮、文本框、单选框等控件使用系统默认的美化样式// 如果不加这行控件会是很丑的经典灰色样式Application.EnableVisualStyles();// 设置文本渲染方式// 参数 false使用 GDI 渲染文本效果更好更清晰// 参数 true使用旧的 GDI 渲染文本兼容性更好但效果差一些Application.SetCompatibleTextRenderingDefault(false);// // 第二步检查程序是否已经在运行防止重复启动// // 定义变量标记互斥量是不是新创建的// true 互斥量是新创建的 → 之前没有程序在运行// false 互斥量已经存在了 → 已经有程序在运行了boolcreatedNew;// 创建互斥量Mutex// 参数1true → 调用者拥有互斥量的初始所有权// 参数2互斥量的名字用程序名作为名字保证全局唯一// 参数3out 输出参数返回互斥量是不是新创建的mutexnewSystem.Threading.Mutex(true,System.Diagnostics.Process.GetCurrentProcess().ProcessName,// 获取当前程序的进程名outcreatedNew);// // 第三步判断是否已经有程序在运行// // 如果 createdNew false → 互斥量已经存在 → 已经有程序在运行了// !createdNew 就是不是新创建的 已经存在了if(!createdNew){// 弹出提示框告诉用户不能重复运行MessageBox.Show(已经运行了本测试程序不能重复运行请检查确认。,// 提示内容提示,// 标题MessageBoxButtons.OK,// 按钮类型只有确定按钮MessageBoxIcon.Warning);// 图标警告图标// 退出程序Application.Exit();}// // 第四步程序正常启动流程// else{// 创建主窗体对象但还不显示Main_Formmain_FormnewMain_Form();// 创建登录窗体对象Login_Formlogin_FormnewLogin_Form();// 显示登录窗体模态对话框// ShowDialog() 的特点// 1. 这个窗体不关掉后面的代码就不会执行// 2. 用户只能操作这个窗体不能点后面的主窗体// 3. 关闭后会返回一个 DialogResult表示用户是点了确定还是取消login_Form.ShowDialog();// // 第五步判断登录是否成功// // 如果登录窗体返回的是 OK用户点了确定/登录按钮if(login_Form.DialogResultDialogResult.OK){// 运行主窗体程序正式开始进入主界面// Application.Run() 会启动消息循环让窗体保持显示并响应用户操作// 直到用户关闭主窗体程序才会结束Application.Run(main_Form);}// 如果用户点了取消或者直接关了登录窗口// 就什么也不做程序直接结束}}}}我做了几处优化1. 变量名改了把容易误导人的isAppRunning改成了createdNew一看就知道是是不是新创建的。2. 去掉了重复代码原来Application.EnableVisualStyles()调用了两次现在只保留一次。3. 加了更详细的注释每一段代码都有这一段是干什么的每个参数是什么意思为什么要这么写4. 优化了 MessageBox给MessageBox.Show()加上了标题、按钮类型、图标参数更规范。