Консоль получения выходит из C#

В качестве альтернативы вы можете использовать следующие методы в классе JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html

run ( с запросом, классами классов и Runner) или runClasses из вашего java-файла.

88
задан ZeroKelvin 23 January 2009 в 21:36
поделиться

4 ответа

Я не уверен, где я нашел код сети, но я нашел его теперь в одном из моих старых проектов. Это позволит Вам делать код очистки в своей консоли, например, когда это будет резко закрыто или из-за завершения работы...

[DllImport("Kernel32")]
private static extern bool SetConsoleCtrlHandler(EventHandler handler, bool add);

private delegate bool EventHandler(CtrlType sig);
static EventHandler _handler;

enum CtrlType
{
  CTRL_C_EVENT = 0,
  CTRL_BREAK_EVENT = 1,
  CTRL_CLOSE_EVENT = 2,
  CTRL_LOGOFF_EVENT = 5,
  CTRL_SHUTDOWN_EVENT = 6
}

private static bool Handler(CtrlType sig)
{
  switch (sig)
  {
      case CtrlType.CTRL_C_EVENT:
      case CtrlType.CTRL_LOGOFF_EVENT:
      case CtrlType.CTRL_SHUTDOWN_EVENT:
      case CtrlType.CTRL_CLOSE_EVENT:
      default:
          return false;
  }
}


static void Main(string[] args)
{
  // Some biolerplate to react to close window event
  _handler += new EventHandler(Handler);
  SetConsoleCtrlHandler(_handler, true);
  ...
}

Обновление

Для тех, которые не проверяют комментарии, кажется, что это конкретное решение делает не работа хорошо (или вообще) на Windows 7 . Следующий поток переговоры об этом

92
ответ дан Mong Zhu 5 November 2019 в 15:12
поделиться

Это кажется, что у Вас есть потоки, непосредственно завершающие приложение? Возможно, было бы лучше иметь сигнал потока основной поток, чтобы сказать, что приложение должно быть завершено.

При получении этого сигнала, основной поток может чисто завершить работу других потоков и наконец закрыть себя.

4
ответ дан Rob 5 November 2019 в 15:12
поделиться

Существует для приложений WinForms;

Application.ApplicationExit += CleanupBeforeExit;

Для Консольных приложений, попробуйте

AppDomain.CurrentDomain.DomainUnload += CleanupBeforeExit;

, Но я не уверен в том, какая точка, которую называют или если она будет работать из текущего домена. Я подозреваю нет.

3
ответ дан Rob Prouse 5 November 2019 в 15:12
поделиться

Проверьте также:

AppDomain.CurrentDomain.ProcessExit
8
ответ дан 24 November 2019 в 07:35
поделиться
Другие вопросы по тегам:

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