У меня есть некоторые проблемы с моей программой, зависающими при выборе файла в диалоговом окне файла. Это код, который показывает диалоговое окно браузера файлов:Приложение, зависающее на DialogResult.OK
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;
}
Я сузил проблему вплоть до между «если» заявлением и «Возвращением строки = minecraftFile.FileName;» .. При использовании отладчика программа занимает до пяти секундного разрыва между этими двумя строками. После его разрыва он возвращается и возвращает значение, как будто ничего не случилось. Но IntelliTrace иногда сталкивается с «FileNotFound Exception», хотя программа никогда не показывает мне никаких сообщений об ошибках и возвращает правильное значение в текстовое поле.
Первейшая часть заключается в том, что это не всегда происходит. Его случайный и может произойти, даже если я выбираю тот же файл, что и в прошлый раз. Файлы, которые я выбираю, также являются локальными файлами на системном диске.
Что может быть неправильным? Как выглядит код?
Последний из них: 'if (minecraftFile.ShowDialog() == DialogResult.OK) {' –
Является ли файл/каталог, который вы просматриваете на локальном диске? – codemonkeh
Да, файлы являются локальными файлами, как указано ранее. –