博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform 记录全局异常捕获
阅读量:6551 次
发布时间:2019-06-24

本文共 2812 字,大约阅读时间需要 9 分钟。

///         ///   应用程序的主入口点。        ///         public static ApplicationContext context;        [STAThread]        private static void Main()        {            try            {                //处理未捕获的异常                   Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);                //处理UI线程异常                   Application.ThreadException += Application_ThreadException;                //处理非UI线程异常                   AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;                var aProcessName = Process.GetCurrentProcess().ProcessName;                if ((Process.GetProcessesByName(aProcessName)).GetUpperBound(0) > 0)                {                    MessageBox.Show(@"系统已经在运行中,如果要重新启动,请从进程中关闭...", @"系统警告", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);                }                else                {                    Application.EnableVisualStyles();                    Application.SetCompatibleTextRenderingDefault(false);                    var sp = new SplashForm(); //create splash screen                    sp.Show(); //show splash screen                    context = new ApplicationContext();                    context.Tag = sp;                    Application.Idle += Application_Idle; //注册程序运行空闲去执行主程序窗体相应初始化代码                    Application.Run(context);                }            }            catch (Exception ex)            {                LogHelper.Log(ex);                MessageBox.Show("系统出现未知异常,请重启系统!");            }        }        //初始化等待处理函数        private static void Application_Idle(object sender, EventArgs e)        {            Application.Idle -= Application_Idle;            if (context.MainForm == null)            {                var mw = new Login();                //YYQTestForm mw = new YYQTestForm();                context.MainForm = mw;                var sp = (SplashForm) context.Tag;                sp.Close(); //关闭启动窗体                 mw.Show(); //启动主程序窗体            }        }        ///        ///  这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考        ///  做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等        ///  这就是仁者见仁智者见智,大家自己做了。        ///        ///         ///         private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)        {            var ex = e.Exception;            if (ex != null)            {                LogHelper.Log(ex);            }            MessageBox.Show("系统出现未知异常,请重启系统!");        }        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)        {            var ex = e.ExceptionObject as Exception;            if (ex != null)            {                LogHelper.Log(ex);            }            MessageBox.Show("系统出现未知异常,请重启系统!");        }

 

转载地址:http://qruco.baihongyu.com/

你可能感兴趣的文章
leetcode 46-Permutations and 47-Permutations II
查看>>
每日一小练——二项式系数加法解
查看>>
培养良好的注释习惯
查看>>
比较讨厌的一种编程方式
查看>>
IO多路复用之epoll
查看>>
双向链表实现队列与循环链表
查看>>
Git多帐号配置,管理多个SSH
查看>>
Windows平台下Glade+GTK开发环境的搭建
查看>>
iOS 7 Development Tips, Tricks & Hacks
查看>>
i/10和i取最后两位的精妙算法(前方高能)
查看>>
SilverLight4常见问题及解决办法
查看>>
如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件
查看>>
[LeetCode]310. Minimum Height Trees
查看>>
深入分析事务的隔离级别
查看>>
计算字体的高度时候,计算的字体要跟 xib 里面字体的大小 要一致的,不然计算的高度是没有意义的,...
查看>>
这两个的意思是不同的。。。
查看>>
label frame没有变,
查看>>
LeetCode题解(一)
查看>>
进程调度算法
查看>>
shell中read使用
查看>>