Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 C#应用程序意外关闭!_C# 4.0 - Fatal编程技术网

C# 4.0 C#应用程序意外关闭!

C# 4.0 C#应用程序意外关闭!,c#-4.0,C# 4.0,我遇到了一个非常令人沮丧的问题。我有一份c#win申请。单击按钮后,程序在执行click事件处理程序后自动关闭。即使我调试了代码,不幸的是我看不到任何错误,它只是退出程序 我哪里做错了 代码如下: private void btnOpenFolder_Click(object sender, EventArgs e) { DialogResult dg = fd1.ShowDialog(); if (dg == DialogResult.O

我遇到了一个非常令人沮丧的问题。我有一份c#win申请。单击按钮后,程序在执行click事件处理程序后自动关闭。即使我调试了代码,不幸的是我看不到任何错误,它只是退出程序

我哪里做错了

代码如下:

private void btnOpenFolder_Click(object sender, EventArgs e)
    {
            DialogResult dg = fd1.ShowDialog();
            if (dg == DialogResult.OK)
            {
                lblInput.Text = fd1.SelectedPath;
                btnOpenFolder.Enabled = false;
                timerCallback = new TimerCallback(tmrQualityEvent);
                tmrQuality = new System.Threading.Timer(timerCallback, null, 0, 1000);
                Thread qualityThread = new Thread(new ThreadStart(QualityMapOpenFolder));
                qualityThread.Start();
                QualityMapOpenFolder();
            }
    }

void QualityMapOpenFolder()
    {
        fileList.Clear();
        string path = lblInput.Text;
        if (Directory.Exists(path))
        {
            foreach (var file in Directory.GetFiles(path))
            {
                if (Path.GetExtension(file) != ".kml")
                {
                    fileList.Add(file);
                }
            }
            SetProgressBarValue(0);
            ChangeFileNameLabel(fileList[0]);
            FileName = fileList[0];
        }
        else
            SetText("Please make sure you have correctly set the open folder path!", true);

        dataListQuality = GetInputData();

        SetText("Calculated Data has been created, please click process files...", false);
        SetProcessButtonStatus(true);
    }

将事件处理程序附加到并记录它。应该可以帮助您找出应用程序崩溃的原因

更新:现在您已经发布了一些代码:

  • 您似乎从启动的另一个线程更新UI元素。您应该仅从创建UI组件的线程(通常是主线程)访问UI组件。考虑使用
  • 在线程上启动
    qualityMapFolder
    方法,然后在启动线程后调用它-这似乎有点奇怪,可能有一些意想不到的副作用

  • 将事件处理程序附加到并记录它。应该可以帮助您找出应用程序崩溃的原因

    更新:现在您已经发布了一些代码:

  • 您似乎从启动的另一个线程更新UI元素。您应该仅从创建UI组件的线程(通常是主线程)访问UI组件。考虑使用
  • 在线程上启动
    qualityMapFolder
    方法,然后在启动线程后调用它-这似乎有点奇怪,可能有一些意想不到的副作用

  • 这种行为的常见原因是后台线程中未处理的异常。以防止程序

    @ChrisWue写了关于如何检测这种异常的文章

    此外,Windows应用程序日志通常提供有关未处理错误的详细信息


    请参阅如何防止在这种情况下终止应用程序。

    这种行为的常见原因是后台线程中未处理的异常。以防止程序

    @ChrisWue写了关于如何检测这种异常的文章

    此外,Windows应用程序日志通常提供有关未处理错误的详细信息


    查看如何防止在这种情况下杀死应用程序。

    您没有向我们显示任何代码,这使得诊断问题变得困难。我建议您将代码复制到安全的地方,然后尽可能多地删除代码,同时保留不良行为。然后你就会知道出了什么问题,或者可以发布简短但完整的程序供我们检查。请注意我的编辑,不要再对我们大喊大叫了。虽然你的问题现在很紧迫,但在三年内,当其他人从中受益时,你将解决它。你没有向我们展示任何代码,这使得诊断问题变得很困难。我建议您将代码复制到安全的地方,然后尽可能多地删除代码,同时保留不良行为。然后你就会知道出了什么问题,或者可以发布简短但完整的程序供我们检查。请注意我的编辑,不要再对我们大喊大叫了。虽然您的问题现在很紧迫,但在三年内,当其他人从中受益时,您将解决它。是的,我使用了线程,但它不让我知道它在哪里破碎,但未处理的异常处理程序工作得很好!!我现在可以看到它压碎了什么。谢谢,我使用了线程,但它不让我知道它在哪里崩溃,但UnhandledException处理程序工作得很好!!我现在可以看到它压碎了什么。谢谢,我正在测试用线程调用它和不使用线程调用它!我只是忘了删除第二个!不,我正在测试用线程调用它和不使用线程调用它!我只是忘了删除第二个!