| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Configuration; |
| | | using System.Data; |
| | | using System.Linq; |
| | | using System.Threading.Tasks; |
| | | using HMI.Core.Setting; |
| | | using HMI.Core.Util; |
| | | using HMI.UI.Util; |
| | | using log4net; |
| | | using Panuon.WPF.UI; |
| | | using System; |
| | | using System.IO; |
| | | using System.Reflection; |
| | | using System.Threading; |
| | | using System.Windows; |
| | | using WPFProject.Utils; |
| | | |
| | | namespace WPFProject |
| | | { |
| | |
| | | /// </summary> |
| | | public partial class App : Application |
| | | { |
| | | public void test() |
| | | private ILog log; |
| | | public App() |
| | | { |
| | | |
| | | log = LogManager.GetLogger("APP"); |
| | | AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; |
| | | } |
| | | |
| | | private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) |
| | | { |
| | | var ex = e.ExceptionObject as Exception; |
| | | log.Error("UnhandledException.", ex); |
| | | MsgBoxHelper.ErrorMessage(Current.MainWindow, this.lang("App.AppUnhandledException",ex.Message), |
| | | this.lang("App.Error"), MessageBoxButton.OK, |
| | | MessageBoxIcon.Error, DefaultButton.YesOK, 5); |
| | | } |
| | | |
| | | private static Mutex mutex; |
| | | private void Application_Startup(object sender, StartupEventArgs e) |
| | | { |
| | | MainWindow window = new MainWindow(); |
| | | window.Show(); |
| | | mutex = new Mutex(true, "TestPlatform_OnlyRun_CRNS"); |
| | | if (mutex.WaitOne(0, false)) |
| | | { |
| | | AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; |
| | | |
| | | LangUtil.Load(); |
| | | SystemSetting.SystemSettingChanged += SystemSetting_SystemSettingChanged; |
| | | ToastHelper.Register(new MainToastHandler()); |
| | | //LoadingWindow window = new LoadingWindow(); |
| | | Login window = new Login(); |
| | | window.Show(); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("程序已经在运行!", "提示"); |
| | | this.Shutdown(); |
| | | } |
| | | } |
| | | |
| | | 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(); |
| | | } |
| | | } |
| | | } |