You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.3 KiB

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<App>()
.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
}