SystemTrayMenu/Business/Program.cs

68 lines
2.2 KiB
C#

using System;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
using SystemTrayMenu.Helper;
namespace SystemTrayMenu
{
internal static class Program
{
[STAThread]
private static void Main()
{
try
{
Log.Initialize();
SingleAppInstance.Initialize();
Language.Initialize();
Config.UpgradeIfNotUpgraded();
if (Config.LoadOrSetByUser())
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += ThreadException;
void ThreadException(object s, ThreadExceptionEventArgs t)
{
AskUserSendError(t.Exception);
}
Scaling.Initialize();
FolderOptions.Initialize();
using (new SystemTrayMenu())
{
Log.WriteApplicationRuns();
Application.Run();
}
}
}
catch (Exception ex)
{
AskUserSendError(ex);
}
finally
{
Log.Close();
}
void AskUserSendError(Exception ex)
{
Log.Error("Application Crashed", ex);
#warning [Feature] When Error ask user to send us #47, todo own dialog, lines here too long
if (MessageBox.Show("A problem has been encountered and the application needs to restart. " +
"Reporting this error will help us make our product better. Press yes to open your standard email app.",
"SystemTrayMenu BugSplat", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
Process.Start("mailto:" + "markus@hofknecht.eu" +
"?subject=SystemTrayMenu Bug reported" +
"&body=" + ex.ToString());
}
AppRestart.ByThreadException();
}
}
}
}