У меня есть довольно большой проект, который совсем недавно начал падать при выходе. Я не самый лучший кодер на С#, но в целом все работает так, как задумано. Однако в этом случае, когда я закрываю свое консольное приложение, оно аварийно завершает работу, но не перехватывается отладчиком MSVC.
1) Когда я создаю его в Release и запускаю, он обычно всегда вылетает при выходе.
2) Когда я создаю его в Debug и запускаю, кажется, что он падает только при выходе каждый 1 из 3-5 раз.
Мне удалось получить ошибку, когда она не завершилась должным образом, но, к сожалению, код выхода не соответствует ничему, что я могу найти в Интернете.
The program '[11108] MCDaemon.vshost.exe: Managed (v4.0.30319)' has exited with code -1073741510 (0xc000013a).
Из того, что я читал по вопросам других людей, это обычно вызвано неуправляемым кодом. Есть ли способ узнать, в чем проблема, не хватает огромного количества строк отладки?
ИЗМЕНИТЬ
Из приведенного ниже ответа это код, вызывающий код выхода, но я не вижу в этом ничего плохого.
public static Boolean Handler(MyWin32.CtrlTypes CtrlType)
{
// A switch to handle the event type.
switch (CtrlType)
{
case MyWin32.CtrlTypes.CTRL_C_EVENT:
Program.TerminateProcess();
break;
case MyWin32.CtrlTypes.CTRL_CLOSE_EVENT:
Program.TerminateProcess();
break;
}
return true;
}
public static void TerminateProcess()
{
// Stop the Poll Timer from Running
PollTimer.Stop();
log.LogMessage("Process is being Shutdown.");
log.LogMessage("Requesting Process to Stop....");
SendProcessCmd("stop");
// Wait and make sure it has exited
Thread.Sleep(5000);
if (!myProcess.HasExited)
{
log.LogMessage("My Process did not stop on its own, forcing Process to quit.");
myProcess.Kill();
}
log.LogMessage("My Process has been Shutdown.");
}