Форма Windows занимает много времени, чтобы закрыть

1

У меня есть простое приложение Windows Form, которое использует OpenFileDialog и SaveFileDialog. Форма имеет кнопку Close, которая при нажатии вызывает следующий код:

private void closeButton_Click(object sender, EventArgs e)
{
    this.Dispose();
}

Если я открою форму и затем закрою в отладке Visual Studio 2010, форма закрывается, и я возвращаюсь в режим редактирования почти сразу. Однако, если я открыл объекты OpenFileDialog или SaveFileDialog, а также либо выбрать файл, либо нажать "Отмена", а затем нажать "Закрыть", форма исчезает мгновенно, но для перехода в режим редактирования VS может потребоваться до 10 секунд.

Мой код для этих методов довольно прост:

private void saveDirectoryButton_Click(object sender, EventArgs e)
{
    SaveFileDialog sfd = new SaveFileDialog();

    try
    {
        String path = Path.GetDirectoryName(settings.SavePath);
        if (!String.IsNullOrEmpty(saveTextBox.Text))
            path = Path.GetDirectoryName(saveTextBox.Text);
        sfd.InitialDirectory = path;
        String name = Path.GetFileName(settings.SavePath);
        if (!String.IsNullOrEmpty(saveTextBox.Text))
            path = Path.GetFileName(saveTextBox.Text);
        sfd.FileName = name;
    }
    catch { /* Don't do anything */ }

    sfd.Filter = "Data File|*.dat|All Files|*.*";
    DialogResult result = sfd.ShowDialog();
    if (result == DialogResult.OK)
        saveTextBox.Text = sfd.FileName;
}

После нажатия кнопки Close окно вывода отображает следующие три строки:

The thread 'vshost.RunParkingWindow' (0x1b8c) has exited with code 0 (0x0).
The thread '<No Name>' (0x39c) has exited with code 0 (0x0).
The program '[6052] LogScanner.vshost.exe: Managed (v2.0.50727)' has exited with code 0 (0x0).

Первые два появляются сразу, а третий появляется непосредственно перед тем, как Visual Studio вернется в режим редактирования.

Кто-нибудь имеет представление о том, почему так долго требуется вернуться в режим редактирования, если я открою один из этих диалогов?

  • 1
    Возможно, не связано: не вызывайте this.Dispose() - попробуйте this.Close() .
  • 1
    Также попробуйте обернуть SaveFileDialog sfd = new SaveFileDialog(); в заявлении об using .
Показать ещё 6 комментариев
Теги:
winforms
visual-studio-2010

1 ответ

0

Если вы хотите закрыть одну форму окна, вы можете использовать:

this.Close();

Если вы хотите закрыть всю программу, вы можете использовать:
Environment.Exit(0);

0 - это только код выхода, это не важно.
Я надеюсь, что это помогает!
  • 0
    OP говорит в комментариях, что он пытался закрыть.
  • 0
    хорошо, но как насчет Environment.Exit (0);?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню