Rich 49b8eaa5eb Added Error Handling generically
B2018-113 - PDF filename based upon the procedure number.  Embedded Slashes and Backslashes in the procedure number are changed to underscores as is done in PROMS.  The code was giving a file-not-found error message.
2018-08-15 13:52:33 +00:00

65 lines
3.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Baseline
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// B2018-113 Added logic to handle errors generically
if (System.Diagnostics.Process.GetCurrentProcess().ProcessName.ToLower().EndsWith("vshost"))
{
Application.Run(new frmBaseline());
}
else
{
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new frmBaseline());
}
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show((e.ExceptionObject as Exception).Message,e.ExceptionObject.GetType().FullName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Application.Exit();
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
// Roaming folders copied to the server when the user logs off the client computer in a Domain environment.
// Windows uses the Local folder for application data that does not roam with the user. Usually this data is
// either machine specific or too large to roam. The AppData\Local folder in Windows Vista is the same as
// the Documents and Settings\username\Local Settings\Application Data folder in Windows XP.
// Windows uses the Roaming folder for application specific data, such as custom dictionaries, which are
// machine independent and should roam with the user profile. The AppData\Roaming folder in Windows Vista
// is the same as the Documents and Settings\username\Application Data folder in Windows XP.
// SpecialFolder.LocalApplicationData returns \Local & SpecialFolder.ApplicationData returns \Roaming
// for example - the SpecialFolder:
// LocalApplicationData: C:\Users\Kathy.VOLIAN0\AppData\Local
// ApplicationData: C:\Users\Kathy.VOLIAN0\AppData\Roaming
// CommonApplicationData: C:\ProgramData
// MyDocuments: C:\Users\Kathy.VOLIAN0\Documents
// The error log is created using log4Net. The variables that were tested were:
// <param name="File" value="${USERPROFILE}/My Documents/VEPROMS/ErrorLog.txt" /> - puts in document directory
// <param name="File" value="${APPDATA}/Volian/Proms2010/ErrorLog.txt" /> - puts in roaming directory
// <param name="File" value="${LOCALAPPDATA}/Temp/VEPROMS/ErrorLog.txt" /> - Vista - puts in local directory. !Exist for XP
// Decided to use 'documents directory' for error log file so that it is easily accessible by user:
MessageBox.Show( e.Exception.Message,e.Exception.GetType().FullName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Application.Exit();
}
}
}