Приложение. Выход () по сравнению с приложением. ExitThread () по сравнению со средой. Выход ()

XPath 1.0 не поддерживает понятие пространства имен по умолчанию (, XPath 2.0 делает). Любой неснабженный префиксом тег, как всегда предполагается, является частью пространства имен без имен.

При использовании XPath 1.0 Вам нужно что-то вроде этого:

public static void main(String args[]) throws Exception {
    SAXBuilder builder = new SAXBuilder();
    Document d = builder.build("xpath.xml");
    XPath xpath = XPath.newInstance("x:collection/x:dvd");
    xpath.addNamespace("x", d.getRootElement().getNamespaceURI());
    System.out.println(xpath.selectNodes(d));
}
32
задан Community 23 May 2017 в 11:47
поделиться

2 ответа

К сожалению, проблема не в t вызвано любым из них и действительно существует (даже если вы не получаете сообщение) во всех этих сценариях.

Ваша проблема заключается в следующем:

При закрытии моего приложения WinForm срабатывает форма в режиме диалога . Эта форма запускает фонового рабочего, который синхронизирует базу данных с удаленной базой данных и отображает его прогресс в «форме заставки».

Поскольку вы фактически не завершаете работу, когда запрашиваете завершение работы, все функции «выхода» являются пытаясь сорвать ваш фоновый поток. К сожалению, это, вероятно, происходит в середине синхронизации вашей БД, и перечисление, работающее в логике сохранения, вероятно, выдает эту ошибку.

Я бы рекомендовал не использовать ничего из этого - просто вызовите myMainForm.Close () вместо этого. Это должно закрыть вашу основную форму, которая соответствующим образом запустит вашу логику закрытия.

24
ответ дан 27 November 2019 в 21:10
поделиться

Environment.Exit () используется для консольных приложений.

Вы хотите использовать: System.Windows.Forms.Application.Exit ()

Выходя из потока, вы выходят только из контекста текущего потока, оставляя работающими все запущенные потоки переднего плана. Я подозреваю, что поток, вызывающий ошибку, все еще работает, так что вы, по сути, замаскировали проблему, а не работали над ней. Я бы попытался выяснить, почему вы получаете эту ошибку «Коллекция была изменена; операция перечисления может не выполняться.» при выходе. Он раскрывается Application.Exit () , но не вызван им.

9
ответ дан 27 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: