85 lines
3.2 KiB
C#

using System;
using System.Drawing;
using System.Windows.Forms;
using DH.Commons.Helper;
using DH.Commons.Models;
using DHSoftware.Utils;
using DHSoftware.Views;
using Microsoft.VisualBasic.Logging;
namespace DHSoftware
{
internal static class Program
{
private static MainWindow mainWindow;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
// 必须在第一个窗口创建前调用以下两行
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// 注册全局异常处理
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
// 初始化AntdUI配置
AntdUI.Localization.DefaultLanguage = "zh-CN";
AntdUI.Config.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
AntdUI.Config.SetCorrectionTextRendering("Microsoft YaHei UI");
AntdUI.Style.Set(AntdUI.Colour.Primary, Color.FromArgb(46, 108, 227));
// 现在再创建窗口
WelcomeWindow.Instance.Show();
UpdateStep(0, "正在初始化", true);
UpdateStep(10, "正在加载数据库", true);
DatabaseUtil.InitializeDatabase();
UpdateStep(30, "正在加载解决方案", true);
MainWindow.Instance.LoadScheme();
UpdateStep(50, "正在连接相机", true);
MainWindow.Instance.ConnectCamera();
UpdateStep(70, "正在连接PLC", true);
MainWindow.Instance.ConnectPLC();
UpdateStep(80, "正在加载算法模型", true);
MainWindow.Instance.InitModel();
UpdateStep(100, "程序初始化完成", true);
Thread.Sleep(100);
WelcomeWindow.Instance.Close();
// 启动主窗口
Application.Run(MainWindow.Instance);
}
// 捕获UI线程中的未处理异常
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
AntdUI.Notification.error(mainWindow, "未处理的UI线程异常", e.Exception.Message, autoClose: 3, align: AntdUI.TAlignFrom.TR);
}
// 捕获非UI线程中的未处理异常
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
AntdUI.Notification.error(mainWindow, "未处理的非UI线程异常", e.ToString(), autoClose: 3, align: AntdUI.TAlignFrom.TR);
}
//更新进度
internal static void UpdateStep(int percentValue, string stepMsg, bool succeed)
{
try
{
WelcomeWindow.Instance.bar_step.Value = percentValue;
WelcomeWindow.Instance.lbl_step.Text = stepMsg + "......";
Thread.Sleep(200);
Application.DoEvents();
}
catch (Exception ex)
{
}
}
}
}