alielie
2025-04-10 6bcafc823e836ecd5790f87178a906333699f868
WPFProject/App.xaml.cs
@@ -4,6 +4,8 @@
using log4net;
using Panuon.WPF.UI;
using System;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Windows;
using WPFProject.Utils;
@@ -16,6 +18,7 @@
    public partial class App : Application
    {
        private ILog log;
        private LogCleanner logCleanner;
        public App()
        {
            log = LogManager.GetLogger("APP");
@@ -26,7 +29,7 @@
        {
            var ex = e.ExceptionObject as Exception;
            log.Error("UnhandledException.", ex);
            MsgBoxHelper.ErrorMessage(Current.MainWindow, this.lang("App.AppUnhandledException",ex.Message),
            MsgBoxHelper.ErrorMessage(Current.MainWindow, this.lang("App.AppUnhandledException", ex.Message),
                    this.lang("App.Error"), MessageBoxButton.OK,
                    MessageBoxIcon.Error, DefaultButton.YesOK, 5);
        }
@@ -34,9 +37,12 @@
        private static Mutex mutex;
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            mutex = new System.Threading.Mutex(true, "TestPlatform_OnlyRun_CRNS");
            mutex = new Mutex(true, "TestPlatform_OnlyRun_CRNS");
            if (mutex.WaitOne(0, false))
            {
                logCleanner = new LogCleanner();
                AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
                LoggerHelper.Register(new CommonLogger());
                LangUtil.Load();
                SystemSetting.SystemSettingChanged += SystemSetting_SystemSettingChanged;
                ToastHelper.Register(new MainToastHandler());
@@ -51,6 +57,26 @@
            }
        }
        private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            // 获取请求加载的程序集名称
            string assemblyName = new AssemblyName(args.Name).Name;
            string[] dirs = new string[] { "3rds", "Libs" };
            foreach (string dir in dirs)
            {
                string dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, dir, $"{assemblyName}.dll");
                if (File.Exists(dllPath))
                {
                    // 如果依赖 DLL 存在,则加载并返回它
                    return Assembly.LoadFrom(dllPath);
                }
            }
            // 否则返回 null
            return null;
        }
        private void SystemSetting_SystemSettingChanged(object sender, SystemSetting e)
        {
            LangUtil.LoadLang();