-1

ファイル ダイアログでファイルを選択すると、プログラムがハングするという問題が発生しました。これは、ファイル ブラウザー ダイアログを表示しているコードです。

    private void isForgeIncluded_btn_Click(object sender, EventArgs e)
    {
        this.isForgeIncluded.Text = FolderFileDialog("file", isForgeIncluded.Text, "Forge installer file (*.jar)|*.jar");
    }

    public string FolderFileDialog(string type, string current, string fileTypes = "All files (*.*)|*.*|All files (*.*)|*.*", string StartFolder = "C:\\")
        string ReturnString = current;
        if (current != "")
        {
            StartFolder = Path.GetFullPath(current);
        }               
        if (type == "file")
        {
            OpenFileDialog minecraftFile = new OpenFileDialog();
            minecraftFile.Title = "Select file";
            minecraftFile.InitialDirectory = StartFolder;
            minecraftFile.RestoreDirectory = true;

            minecraftFile.Filter = fileTypes;
            if (minecraftFile.ShowDialog() == DialogResult.OK)
            {
                ReturnString = minecraftFile.FileName;
                return ReturnString;
            }
            minecraftFile = null;
        }
        return ReturnString; 
    }

問題を「if」ステートメントと「Return string = minecraftFile.FileName;」の間に絞り込みました。.. デバッガーを使用する場合、プログラムはこれらの 2 つの行の間に最大 5 秒間の休憩を取ります。中断した後、戻ってきて、何も問題がなかったかのように値を返します。しかし、IntelliTrace は、プログラムがエラー メッセージを表示しないにもかかわらず、"FileNotFound Exception" を表示することがあり、正しい値をテキスト ボックスに返します。

奇妙な部分は、これが常に起こるとは限らないということです。ランダムで、前回と同じファイルを選択しても発生する可能性があります。選択したファイルは、システム ドライブ上のローカル ファイルでもあります。

何が間違っている可能性がありますか?コードは正しいように見えますか?

4

1 に答える 1