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.
		
			
				
	
	
		
			65 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			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();
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |