当我的C#form崩溃时,它会尝试创建自己的新实例

当我的C#form崩溃时,它会尝试创建自己的新实例,c#,arrays,forms,C#,Arrays,Forms,我对使用数组的表单应用程序做了一些冗长的工作,有时在开发过程中我会错误地处理它,而不是一个明显的错误或崩溃整个应用程序重新启动并尝试运行: Application.Run(new SplashForm()); 为什么会发生这种情况?这让调试非常痛苦 谢谢检查您的项目是否有一个应用程序级的错误处理程序,所有这些程序都在冒泡 您可能希望将错误处理代码放在应用程序中适当的位置。检查您的项目是否有一个应用程序级的错误处理程序 您可能希望将错误处理代码放在应用程序中的适当位置。好的,谢谢您的帮助,但我已

我对使用数组的表单应用程序做了一些冗长的工作,有时在开发过程中我会错误地处理它,而不是一个明显的错误或崩溃整个应用程序重新启动并尝试运行:

Application.Run(new SplashForm());
为什么会发生这种情况?这让调试非常痛苦


谢谢

检查您的项目是否有一个应用程序级的错误处理程序,所有这些程序都在冒泡


您可能希望将错误处理代码放在应用程序中适当的位置。

检查您的项目是否有一个应用程序级的错误处理程序


您可能希望将错误处理代码放在应用程序中的适当位置。

好的,谢谢您的帮助,但我已经解决了,问题是它正在从后台工作程序返回RunWorkerCompleteEvent,它正在设置label属性,这很好,除了标签的命名与设置的标签文本不同,而且由于我通过编程获取控件,然后设置值,因此很难诊断

奇怪的行为,如果控件不存在,它会重新加载整个表单,有人能解释一下吗


再次感谢大家

好的,谢谢大家的帮助,但我解决了问题,问题是它正在从后台工作程序返回RunworkerCompleteEvent。它正在设置label属性,这工作正常,只是标签的命名与设置的标签文本不同,由于我通过编程获得控制,然后设置值,所以很难诊断

奇怪的行为,如果控件不存在,它会重新加载整个表单,有人能解释一下吗


再次感谢大家

您可能希望在应用程序中添加错误处理。下面是我们用于此目的的一些代码:-

namespace YourNamespace
{
    static class Program
    {

        [STAThread]
        static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

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

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            HandleException((Exception)e.ExceptionObject);
        }

        static void HandleException(Exception e)
        {
        //Handle it here
        }

    }
}
谢谢

菲尔。
您可能希望将错误处理添加到应用程序中。下面是我们用于此目的的一些代码:-

namespace YourNamespace
{
    static class Program
    {

        [STAThread]
        static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

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

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            HandleException((Exception)e.ExceptionObject);
        }

        static void HandleException(Exception e)
        {
        //Handle it here
        }

    }
}
谢谢

菲尔。
这是因为您试图在一个不存在的控件上调用UI线程。它可能抛出了跨线程异常,因为您没有错误处理,它在新的SplashForm()的返回点崩溃

在调试模式下运行应用程序时,请检查“输出”窗口以查看是否显示任何异常消息。
您可能会看到类似“cross thread operation not valid Access from thread not valid access from the thread to the created on the thread.”的消息。这是因为您试图在不存在的控件上调用UI线程。它可能抛出了跨线程异常,因为您没有错误处理,它在新的SplashForm()的返回点崩溃

在调试模式下运行应用程序时,请检查“输出”窗口以查看是否显示任何异常消息。
您可能会看到一条消息,如“cross thread operation not valid Access from thread not valid accessed from that the thread on the created on.”

发布更多代码!Application.Run命令是否在(try)catch子句中?我不明白您希望从这种类型的详细信息中得到什么,请提出提及适当详细信息的点对点问题。我无法确定要发布什么代码-如果在任何时候出现任何故障(例如,如果我尝试寻址不存在的数组值)它将再次尝试运行表单应用程序!我不知道如何找出是哪一位导致了这个问题,我想知道是否有任何愚蠢的明显的东西需要检查!application.run在main()中基本上是独立的,所以这不是问题所在。。。主窗体在哪里创建?然后在splashform构造函数中发布任何代码?发布更多代码!Application.Run命令是否在(try)catch子句中?我不明白您希望从这种类型的详细信息中得到什么,请提出提及适当详细信息的点对点问题。我无法确定要发布什么代码-如果在任何时候出现任何故障(例如,如果我尝试寻址不存在的数组值)它将再次尝试运行表单应用程序!我不知道如何找出是哪一位导致了这个问题,我想知道是否有任何愚蠢的明显的东西需要检查!application.run在main()中基本上是独立的,所以这不是问题所在。。。主窗体是在哪里创建的?然后在splashform构造函数中发布任何代码?我已经有了错误处理代码,但是当它触发时会导致应用程序。run()无论如何我已经有了错误处理代码,但是当它触发时会导致应用程序。run()无论如何谢谢,这看起来很棒,我已经添加了它,但是任何错误仍然会导致它严重崩溃,而不是触发异常,我应该在这里添加一个通用的工作服吗?谢谢Phil,这看起来很棒,我已经添加了它,但是任何错误仍然会导致它严重崩溃,而不是触发异常,我应该在这里添加一个通用的工作服吗?