ファイル ダイアログでファイルを選択すると、プログラムがハングするという問題が発生しました。これは、ファイル ブラウザー ダイアログを表示しているコードです。
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" を表示することがあり、正しい値をテキスト ボックスに返します。
奇妙な部分は、これが常に起こるとは限らないということです。ランダムで、前回と同じファイルを選択しても発生する可能性があります。選択したファイルは、システム ドライブ上のローカル ファイルでもあります。
何が間違っている可能性がありますか?コードは正しいように見えますか?