diff --git a/VRCMelonAssistant/Classes/HyperlinkExtensions.cs b/VRCMelonAssistant/Classes/HyperlinkExtensions.cs index 1de35c5..0f47d4d 100644 --- a/VRCMelonAssistant/Classes/HyperlinkExtensions.cs +++ b/VRCMelonAssistant/Classes/HyperlinkExtensions.cs @@ -1,4 +1,5 @@ using System.Diagnostics; +using System.Threading.Tasks; using System.Windows; using System.Windows.Documents; @@ -33,5 +34,16 @@ namespace VRCMelonAssistant Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri)); e.Handled = true; } + + public static void NoAwait(this Task task) + { + task.ContinueWith(t => + { + if (t.IsFaulted) + { + Utils.ShowErrorMessageBox("Exception in free-floating task", t.Exception); + } + }); + } } } diff --git a/VRCMelonAssistant/Classes/Utils.cs b/VRCMelonAssistant/Classes/Utils.cs index b95f901..2838d68 100644 --- a/VRCMelonAssistant/Classes/Utils.cs +++ b/VRCMelonAssistant/Classes/Utils.cs @@ -409,6 +409,12 @@ namespace VRCMelonAssistant caller.BeginInvoke(Message, null, null, null); } + public static void ShowErrorMessageBox(string title, Exception ex) + { + MessageBox.Show(MainWindow.Instance, $"{title}\n{ex}", "Error", + MessageBoxButton.OK, MessageBoxImage.Error); + } + /// /// Attempts to write the specified string to the . /// diff --git a/VRCMelonAssistant/MainWindow.xaml.cs b/VRCMelonAssistant/MainWindow.xaml.cs index 9568725..0c6ac69 100644 --- a/VRCMelonAssistant/MainWindow.xaml.cs +++ b/VRCMelonAssistant/MainWindow.xaml.cs @@ -66,7 +66,7 @@ namespace VRCMelonAssistant Main.Content = Intro.Instance; break; case "Mods": - ShowModsPage(); + ShowModsPage().NoAwait(); break; case "About": Main.Content = About.Instance; @@ -137,7 +137,7 @@ namespace VRCMelonAssistant private void ModsButton_Click(object sender, RoutedEventArgs e) { - ShowModsPage(); + ShowModsPage().NoAwait(); } private void IntroButton_Click(object sender, RoutedEventArgs e)