123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using MeterVision.Dlg;
- using MeterVision.Util;
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Data;
- using System.Linq;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Threading;
- namespace MeterVision
- {
- /// <summary>
- /// App.xaml 的交互逻辑
- /// </summary>
- public partial class App : Application
- {
- // protected override void OnStartup(StartupEventArgs e)
- //{
- // base.OnStartup(e);
- // this.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
- // // 设置许可证上下文为非商业用途
- // //ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
- //}
- private static Mutex mutex = new Mutex(true, "{E1805A91-1078-417D-9B65-43FCFCA504CC_tt}");
- protected override void OnStartup(StartupEventArgs e)
- {
- if (!mutex.WaitOne(TimeSpan.Zero, true))
- {
- //如果另一个实例已经拥有这个互斥锁,那么当前实列将不会继续运行
- MessageBox.Show("程序已经在运行。");
- Current.Shutdown();
- return;
- }
- base.OnStartup(e);
- this.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
- MainWindow mainWindow = new MainWindow();
- this.MainWindow = mainWindow;
- // 检查是否已注册
- if (LicenseMana.IsLicensed())
- {
- // 已注册,显示主界面
- mainWindow.Show();
- }
- else
- {
- // 未注册,弹出注册对话框
- RegisterDlg registerDlg = new RegisterDlg();
- bool? result = registerDlg.ShowDialog();
- if (result == true)
- {
- // 用户成功注册,显示主界面
- mainWindow.Show();
- }
- else
- {
- Shutdown();
- }
- }
- //---------------------------------------------------------------------------------
- }
- protected override void OnExit(ExitEventArgs e)
- {
- //释放互斥锁
- if(mutex != null)
- {
- mutex.ReleaseMutex();
- mutex.Close();
- }
- base.OnExit(e);
- }
- private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
- {
- // 检查异常类型
- if (e.Exception is AccessViolationException)
- {
- // 记录或处理访问违规错误
- MessageBox.Show("访问无效内存,程序即将停止。", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- e.Handled = true; // 防止程序崩溃
- }
- else
- {
- // 其他异常处理
- MessageBox.Show($"发生错误: {e.Exception.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- e.Handled = true; // 防止程序崩溃
- }
- }
- }
- }
|