aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs95
1 files changed, 68 insertions, 27 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
index 714b83dfa..4021d89ef 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
@@ -23,6 +23,7 @@ using Tango.SQLExaminer;
using System.Data.SqlClient;
using Tango.BL.Builders;
using Tango.PPC.Common.Threading;
+using System.Diagnostics;
namespace Tango.PPC.UI.PPCApplication
{
@@ -64,6 +65,11 @@ namespace Tango.PPC.UI.PPCApplication
public event EventHandler ContentRendered;
/// <summary>
+ /// Occurs when the application has encountered an error when initializing.
+ /// </summary>
+ public event EventHandler<Exception> ApplicationInitializationError;
+
+ /// <summary>
/// Gets a value indicating whether the application is shutting down.
/// </summary>
public bool IsShuttingDown { get; private set; }
@@ -125,46 +131,72 @@ namespace Tango.PPC.UI.PPCApplication
{
PPCSettings settings = null;
+ bool initialized = false;
+
await Task.Factory.StartNew(() =>
{
- LogManager.Log("Reading PPC settings...");
- settings = SettingsManager.Default.GetOrCreate<PPCSettings>();
+ try
+ {
+ LogManager.Log("Reading PPC settings...");
+ settings = SettingsManager.Default.GetOrCreate<PPCSettings>();
- LogManager.Log(settings.ToJsonString());
+ LogManager.Log(settings.ToJsonString());
- LogManager.Log("Reading Core settings...");
- var coreSettings = SettingsManager.Default.GetOrCreate<CoreSettings>();
+ LogManager.Log("Reading Core settings...");
+ var coreSettings = SettingsManager.Default.GetOrCreate<CoreSettings>();
- if (!SettingsManager.Default.IsFileExists())
- {
- LogManager.Log("Settings file does not exists. creating...");
- settings.Save();
- }
+ if (!SettingsManager.Default.IsFileExists())
+ {
+ LogManager.Log("Settings file does not exists. creating...");
+ settings.Save();
+ }
- if (App.StartupArgs.Contains("-update_ok"))
- {
- LogManager.Log("Application started with '-update_ok' startup arguments. The application has been successfully updated.");
- settings.ApplicationState = ApplicationStates.Ready;
- settings.Save();
- }
+ if (App.StartupArgs.Contains("-update_ok"))
+ {
+ LogManager.Log("Application started with '-update_ok' startup arguments. The application has been successfully updated.");
+ settings.ApplicationState = ApplicationStates.Ready;
+ settings.Save();
+ }
- if (settings.ApplicationState == ApplicationStates.Ready)
+ if (settings.ApplicationState == ApplicationStates.Ready)
+ {
+ LogManager.Log("Initializing ObservablesStaticCollections...");
+ ObservablesStaticCollections.Instance.Initialize();
+ LogManager.Log("Loading machine from database...");
+ _machine = new MachineBuilder(ObservablesContext.CreateDefault()).SetFirst().WithOrganization().WithConfiguration().Build();
+ }
+
+ initialized = true;
+ }
+ catch (Exception ex)
{
- LogManager.Log("Loading machine from database...");
- ObservablesStaticCollections.Instance.Initialize();
- _machine = new MachineBuilder(ObservablesContext.CreateDefault()).SetFirst().WithOrganization().WithConfiguration().Build();
+ LogManager.Log(ex, "Application Initialization Error!");
+ ApplicationInitializationError?.Invoke(this, ex);
+ return;
}
});
- if (settings.ApplicationState == ApplicationStates.PreSetup || settings.ApplicationState == ApplicationStates.SemiSetup)
+ if (initialized)
{
- LogManager.Log($"The application is in {settings.ApplicationState} state. database initialization skipped. Invoking setup required event!");
- SetupRequired?.Invoke(this, new EventArgs());
- }
- else
- {
- PostDbInitialize();
+ try
+ {
+ if (settings.ApplicationState == ApplicationStates.PreSetup || settings.ApplicationState == ApplicationStates.SemiSetup)
+ {
+ LogManager.Log($"The application is in {settings.ApplicationState} state. database initialization skipped. Invoking setup required event!");
+ SetupRequired?.Invoke(this, new EventArgs());
+ }
+ else
+ {
+ PostDbInitialize();
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Application Post Initialization Error!");
+ ApplicationInitializationError?.Invoke(this, ex);
+ return;
+ }
}
}
@@ -273,5 +305,14 @@ namespace Tango.PPC.UI.PPCApplication
vm.OnApplicationShuttingDown();
}
}
+
+ /// <summary>
+ /// Restarts the application.
+ /// </summary>
+ public void Restart()
+ {
+ Process.Start(Application.ResourceAssembly.Location);
+ Environment.Exit(0);
+ }
}
}