首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

c#遇到未捕获错误后并自行处理后,怎么屏蔽这个消息框:遇到有关问题需要关闭。小弟我们对此引起的不便表示抱歉

2013-04-02 
c#遇到未捕获异常后并自行处理后,如何屏蔽这个消息框:遇到问题需要关闭。我们对此引起的不便表示抱歉。c#遇

c#遇到未捕获异常后并自行处理后,如何屏蔽这个消息框:遇到问题需要关闭。我们对此引起的不便表示抱歉。
c#遇到未捕获异常后并自行处理后,还是会弹出这个讨厌的消息框:遇到问题需要关闭。我们对此引起的不便表示抱歉。

遇到未捕获异常后(如OutOfMemoryException),我们可能要让程序自己重启或写日志,如果弹出这个,等于要人工干预。装到服务器上的软件,要自行处理并恢复(如重启软件),让人工干预就太过分了。

在网上找了很多代码,都是无非是下面的样子:
http://code.iteye.com/blog/1306217
http://www.cnblogs.com/cgzwwy/archive/2008/08/31/1280597.html
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.setunhandledexceptionmode.aspx
http://blog.163.com/muyao520@126/blog/static/6955545620106148493899/

http://bbs.csdn.net/topics/320185539,这个人的问题也我一样。

http://weblogs.asp.net/bsimser/archive/2008/04/18/ui-exception-handling-vs-appdomain-exceptions.aspx,老外写的。也没有解决办法。


/// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            //处理未捕获的异常   
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            //处理UI线程异常   
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            //处理非UI线程异常   
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            MessageBox.Show((e.ExceptionObject as Exception).Message);
        }

        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            MessageBox.Show(e.Exception.Message);
        }




namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ThreadStart newThreadStart = new ThreadStart(newThread_Execute);


            Thread newThread = new Thread(newThreadStart);
            newThread.Start();
        }

        // The thread we start up to demonstrate non-UI exception handling. 
        void newThread_Execute()
        {
            throw new Exception("The method or operation is not implemented.");
        }
    }
}

[解决办法]
一时想不起来如何触发一个这样的异常,也就没法测试了

http://blog.csdn.net/qiqi5521/article/details/1911371
这篇文章提到用SetUnhandledExceptionFilter过滤器拦截异常处理

http://bbs.csdn.net/topics/60052571
27L介绍了如何在程序崩溃的时候屏蔽调试器窗口的弹出。

热点排行