using System; using System.Windows.Forms; using ST = System.Threading; using SWF = System.Windows.Forms; using T = System.Diagnostics.Trace; namespace WindowsFormsApplication1 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(OnAppException); Application.ThreadExit += new EventHandler(OnAppExit); string logFile = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "Applog.txt"); System.IO.TextWriter log = new System.IO.StreamWriter(logFile); if (true) { System.Diagnostics.TextWriterTraceListener logger; logger = new System.Diagnostics.TextWriterTraceListener(log); System.Diagnostics.Trace.Listeners.Add(logger); System.Diagnostics.Trace.WriteLine("App starting:" + DateTime.Now); } Application.Run(new Form1()); } /// <summary> /// Generic exception handler for application. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void OnAppException(object sender, ST.ThreadExceptionEventArgs e) { Exception ex; ex = e.Exception; // inform user... SWF.MessageBox.Show("Halting due to error: " + ex.Message, "Bank Customer App", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); // log it (the entire exception chain)... T.WriteLine("Generic Application Exception Handler:"); while (ex != null) { T.WriteLine(ex.GetType().FullName); T.Indent(); T.WriteLine("Msg: " + ex.Message); T.WriteLine("Trace: " + ex.StackTrace); T.Unindent(); T.Flush(); ex = ex.InnerException; }//while // halt app T.Close(); SWF.Application.Exit(); } /// <summary> /// Called during normal application termination. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void OnAppExit(object sender, System.EventArgs e) { T.Close(); // close trace file } } }
转载于:https://www.cnblogs.com/NewLand/archive/2010/03/21/1690746.html