using Avalonia; using Avalonia.Media; using Avalonia.ReactiveUI; using EC.Util.Common; using JiLinApp.Core.Avalonia; using ReactiveUI; using System; using System.Threading.Tasks; namespace JiLinApp; internal class Program { // Initialization code. Don't use any Avalonia, third-party APIs or any // SynchronizationContext-reliant code before AppMain is called: things aren't initialized // yet and stuff might break. [STAThread] public static void Main(string[] args) { GlobalInit(); try { AppBuilder appBuilder = BuildAvaloniaApp(); appBuilder.StartWithClassicDesktopLifetime(args); } catch (Exception e) { LogUnit.Error(e); } } // Avalonia configuration, don't remove; also used by visual designer. public static AppBuilder BuildAvaloniaApp() { return AppBuilder.Configure() .UsePlatformDetect() .WithInterFont() .LogToTrace() .UseReactiveUI() .With(new FontManagerOptions { DefaultFamilyName = "avares://JiLinApp/Assets/Fonts/msyh.ttf#Microsoft YaHei", FontFallbacks = new[] { new FontFallback { FontFamily = new FontFamily("avares://JiLinApp/Assets/Fonts/msyh.ttf#Microsoft YaHei") } } }); } #region extend private static void GlobalInit() { // Active to initialize LogUnit.Init(); // HandleExceptions // Exceptions from another thread AppDomain.CurrentDomain.UnhandledException += (sender, e) => { if (e.ExceptionObject is Exception ex) LogUnit.Error(ex); }; TaskScheduler.UnobservedTaskException += (sender, e) => { e.SetObserved(); LogUnit.Error(e.Exception); }; // Exceptions from Reactive UI RxAppExceptionHandler.Instance.OnExceptionHandler += LogUnit.Error; RxApp.DefaultExceptionHandler = RxAppExceptionHandler.Instance; } private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { throw new NotImplementedException(); } #endregion extend }