100 lines
3.5 KiB
C#
100 lines
3.5 KiB
C#
|
using System;
|
|||
|
using System.Windows.Forms;
|
|||
|
using System.Runtime.InteropServices;
|
|||
|
using System.Threading;
|
|||
|
using System.IO;
|
|||
|
|
|||
|
using smutils = SafeMobileLib.Utils;
|
|||
|
using System.Diagnostics;
|
|||
|
using Microsoft.VisualBasic.ApplicationServices;
|
|||
|
using System.Collections.ObjectModel;
|
|||
|
using SafeMobileLib.Helpers;
|
|||
|
using Tetra_GW.Helpers;
|
|||
|
|
|||
|
namespace Tetra_GW
|
|||
|
{
|
|||
|
static class Program
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// The main entry point for the application.
|
|||
|
/// </summary>
|
|||
|
static MainForm MainWindow = null;
|
|||
|
static String filename = "";
|
|||
|
static void Main(string[] args)
|
|||
|
{
|
|||
|
Console.Title = "Tetra_GWConsole";
|
|||
|
|
|||
|
// parse the command line args
|
|||
|
CommandLineHelper clh = new CommandLineHelper(args, Console.Title);
|
|||
|
|
|||
|
// load the configuration for the gateway
|
|||
|
ConfigHelper.LoadConfig();
|
|||
|
|
|||
|
|
|||
|
if (!AppDomain.CurrentDomain.FriendlyName.EndsWith("vshost.exe"))
|
|||
|
{
|
|||
|
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
|
|||
|
|
|||
|
// Set the unhandled exception mode to force all Windows Forms errors
|
|||
|
// to go through our handler.
|
|||
|
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
|||
|
|
|||
|
AppDomain.CurrentDomain.UnhandledException += new System.UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
|||
|
}
|
|||
|
|
|||
|
SingleInstanceController controller = new SingleInstanceController();
|
|||
|
controller.Run(args);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public class SingleInstanceController : WindowsFormsApplicationBase
|
|||
|
{
|
|||
|
public static ReadOnlyCollection<string> CommandLineArgs = null;
|
|||
|
|
|||
|
public SingleInstanceController()
|
|||
|
{
|
|||
|
IsSingleInstance = true;
|
|||
|
|
|||
|
Startup += SingleInstanceController_Startup;
|
|||
|
StartupNextInstance += this_StartupNextInstance;
|
|||
|
}
|
|||
|
|
|||
|
void SingleInstanceController_Startup(object sender, StartupEventArgs e)
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
|
|||
|
{
|
|||
|
if (MainForm.WindowState == FormWindowState.Minimized)
|
|||
|
{
|
|||
|
MainForm.Show();
|
|||
|
MainForm.ShowInTaskbar = true;
|
|||
|
MainForm.WindowState = FormWindowState.Normal;
|
|||
|
// bring to front
|
|||
|
MainForm.Activate();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
protected override void OnCreateMainForm()
|
|||
|
{
|
|||
|
MainForm = new MainForm();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
|
|||
|
{
|
|||
|
MessageBox.Show(e.Exception.Message, "ThreadException TetraGateway. Please restart the application.");
|
|||
|
SafeMobileLib.Utils.WriteEventLog("TetraGateway", "ThreadException : " + e.Exception.ToString(), EventLogEntryType.Error, 401);
|
|||
|
// here you can log the exception ...
|
|||
|
}
|
|||
|
|
|||
|
static void CurrentDomain_UnhandledException(object sender, System.UnhandledExceptionEventArgs e)
|
|||
|
{
|
|||
|
MessageBox.Show((e.ExceptionObject as Exception).Message, "Unhandled UI Exception TetraGateway. Please restart the application.");
|
|||
|
// here you can log the exception ...
|
|||
|
SafeMobileLib.Utils.WriteEventLog("TetraGateway", "ThreadException : " + e.ToString(), EventLogEntryType.Error, 402);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|