123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- using LogoForceTestApp.Modules.MainModule.Models;
- using LogoForceTestApp.Modules.MainModule;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Configuration;
- using Prism.DryIoc;
- using Prism.Ioc;
- using Prism.Modularity;
- using Serilog.Events;
- using Serilog;
- using System;
- using System.IO;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Threading;
- using LogoForceTestApp.Services.Interfaces;
- using LogoForceTestApp.Services;
- using LogoForceTestApp.Views;
- using DryIoc;
- using Team.Utility;
- using DryIoc.Microsoft.DependencyInjection;
- using ConfigurationBuilder = Microsoft.Extensions.Configuration.ConfigurationBuilder;
- using Repository;
- using Microsoft.EntityFrameworkCore;
- using AutoMapper.EquivalencyExpression;
- using System.Linq;
- using System.Reflection;
- using TouchSocket.Core;
- using TouchSocket.Sockets;
- using System.Net.Sockets;
- using TcpClient = TouchSocket.Sockets.TcpClient;
- using HandyControl.Controls;
- using Window = System.Windows.Window;
- namespace LogoForceTestApp
- {
- /// <summary>
- /// App.xaml 的交互逻辑
- /// </summary>
- public partial class App
- {
- System.Threading.Mutex mutex;
- public App()
- {
- this.Startup += new StartupEventHandler(App_Startup);
- }
- void App_Startup(object sender, StartupEventArgs e)
- {
- bool ret;
- mutex = new System.Threading.Mutex(true, "ElectronicNeedleTherapySystem", out ret);
- if (!ret)
- {
- //System.Windows.MessageBox.Show("已有一个程序实例运行");
- Environment.Exit(0);
- }
- }
- private static readonly string logPath = AppDomain.CurrentDomain.BaseDirectory + "logs.db";
- private readonly ILogger _log = new LoggerConfiguration()
- .WriteTo.Console(LogEventLevel.Debug)
- .WriteTo.Debug(LogEventLevel.Debug)
- .WriteTo.SQLite(logPath)
- .WriteTo.File(AppDomain.CurrentDomain.BaseDirectory + "logs/log.log", rollingInterval: RollingInterval.Day)
- .CreateLogger();
- public static string Version { get; private set; }
- protected override void OnStartup(StartupEventArgs e)
- {
- var version = Assembly.GetExecutingAssembly().GetName().Version;
- Version = version.ToString();
- var teamContext = new TeamDataContext();
- teamContext.Database.Migrate();
- DispatcherUnhandledException += App_DispatcherUnhandledException;
- AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
- TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
- base.OnStartup(e);
- }
- protected override Window CreateShell()
- {
- return Container.Resolve<MainWindow>();
- }
- protected override void RegisterTypes(IContainerRegistry containerRegistry)
- {
- containerRegistry.RegisterInstance(_log);
- containerRegistry.RegisterSingleton<IRepository, Repository.Repository>();
- containerRegistry.RegisterSingleton<IModbusTcpSlaverService, ModbusTcpSlaverService>();
- TcpClient tcpClient = new TcpClient();
- //载入配置
- tcpClient.Setup(new TouchSocketConfig()
- .SetRemoteIPHost("192.168.10.200:7790")
- .ConfigureContainer(a =>
- {
- a.AddConsoleLogger();//添加一个日志注入
- }));
- try
- {
- tcpClient.Connect();//调用连接,当连接不成功时,会抛出异常。
- Growl.Info("客户端成功连接");
- }
- catch (Exception)
- {
- Growl.Warning("连接异常");
- }
- containerRegistry.RegisterInstance(tcpClient);
- }
- protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
- {
- moduleCatalog.AddModule<MainModule>();
- }
- protected override IContainerExtension CreateContainerExtension()
- {
- var services = new ServiceCollection();
- Serilog.Log.Logger = _log;
- services.AddLogging(c => c.AddSerilog());
- var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
- .AddJsonFile("appsettings.json", false, true);
- var configuration = builder.Build();
- services.ConfigureWritable<AppSettings>(configuration.GetSection(nameof(AppSettings)));
- services.AddHttpClient();
- services.AddAutoMapper(cfg =>
- {
- cfg.AddCollectionMappers();
- });
- return new DryIocContainerExtension(new DryIoc.Container(CreateContainerRules())
- .WithDependencyInjectionAdapter(services));
- }
- private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
- {
- _log.Information($"App TaskSchedulerUnobservedTaskException Exit:{e.Exception}");
- }
- private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
- {
- _log.Information($"App CurrentDomainUnhandledException Exit:{e.ExceptionObject}");
- }
- private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
- {
- _log.Information($"App AppDispatcherUnhandledException Exit:{e.Exception}");
- }
- }
- }
|