diff --git a/Dalamud/EntryPoint.cs b/Dalamud/EntryPoint.cs index 417fa1255..4d5bc571d 100644 --- a/Dalamud/EntryPoint.cs +++ b/Dalamud/EntryPoint.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Net; +using System.Threading.Tasks; using Dalamud.Interface; using EasyHook; using Serilog; @@ -25,14 +26,14 @@ namespace Dalamud { // Log any unhandled exception. AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; + TaskScheduler.UnobservedTaskException += OnUnobservedTaskException; - using (var dalamud = new Dalamud(info)) { - Log.Information("Starting a session.."); + using var dalamud = new Dalamud(info); + Log.Information("Starting a session.."); - // Run session - dalamud.Start(); - dalamud.WaitForUnload(); - } + // Run session + dalamud.Start(); + dalamud.WaitForUnload(); } catch (Exception ex) { Log.Fatal(ex, "Unhandled exception on main thread."); } finally { @@ -42,21 +43,21 @@ namespace Dalamud { Log.CloseAndFlush(); } } - + private Logger NewLogger(string baseDirectory) { var logPath = Path.Combine(baseDirectory, "dalamud.txt"); - + return new LoggerConfiguration() .WriteTo.Async(a => a.File(logPath)) .WriteTo.EventSink() #if DEBUG .MinimumLevel.Verbose() #else - .MinimumLevel.Information() + .MinimumLevel.Information() #endif .CreateLogger(); } - + private void OnUnhandledException(object sender, UnhandledExceptionEventArgs arg) { switch (arg.ExceptionObject) { case Exception ex: @@ -67,5 +68,11 @@ namespace Dalamud { break; } } + + private void OnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) + { + if (!e.Observed) + Log.Error(e.Exception, "Unobserved exception in Task."); + } } }