C#程序运行提示“遇到问题需要关闭”

运行一个C#程序,在打开的时候提示“HSL遇到问题需要关闭”;HSL为程序的名称

您如果突然遇到这样的情况.应该是您的程序中有未处理的异常.

异常会出现在您的程序的任何一个地方.但是如果你没有捕捉到.那么就会造成程序崩溃.导致您看到的情况.

在winform中可以这样处理全局未处理异常

/// <summary>
        ///   åº”用程序的主入口点。
        /// </summary>
        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(); //启动主程序窗体
            }
        }


        ///<summary>
        ///  è¿™å°±æ˜¯æˆ‘们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考
        ///  åšæ³•å¾ˆå¤šï¼Œå¯ä»¥æ˜¯æŠŠå‡ºé”™è¯¦ç»†ä¿¡æ¯è®°å½•åˆ°æ–‡æœ¬ã€æ•°æ®åº“,发送出错邮件到作者信箱或出错后重新初始化等等
        ///  è¿™å°±æ˜¯ä»è€…见仁智者见智,大家自己做了。
        ///</summary>
        ///<param name="sender"> </param>
        ///<param name="e"> </param>
        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("系统出现未知异常,请重启系统!");
        }
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-09-10
程序内部发生了错误,但是你的程序没有捕获到这个错误,建议在程序中使用全局错误处理机制处理,这样会给用户更好的客户体验。本回答被网友采纳
相似回答