2015-04-07 2 views
1

Я создал простой элемент toolstrip, который выходит из приложений.Environment.Exit производит ошибку win32handle случайно

Он сохраняет данные в datatable, а затем возвращает MessageBox, говоря, что сохранение было выполнено sucessfuly, а затем завершено.

Это висит, когда я использую Environment.Exit(1), читая какое-то подробно он сказал бы это нить может ждать, сон и т.д.

Я попытался с помощью Environment.Exit(0) и как-то он работал, но я на самом деле не зная, Зачем. Я знаю, что это связано с кодом выхода, но, будучи «любительским» программистом, я понятия не имею, что это значит.

Любые подсказки? Возможно, с источниками чтения, адресованными программистам конечного пользователя?

+1

Вам нужно будет документировать свой вопрос лучше. Вы должны включить неуправляемую отладку и использовать Debug + Break All, когда она зависает. Используйте окно Debug + Windows + Threads, чтобы выбрать поток, если это необходимо, вероятно, вам нужно посмотреть поток финализатора. Стек вызовов, который вы видите, является важной документацией для проблемы. Если все это похоже на gobbledegook, это, вероятно, так, то просто не используйте Environment.Exit() вообще. Другим способом прекращения вашей программы является Application.Exit(), он обычно очищается. –

+0

спасибо, application.exit действительно сделал это – ng80092b

ответ

1

При указании 0, то это означает успех но при указании ничего другого, кроме 0, то это просто означает Ошибка.

Вы можете проверить System Error Codes (0-499)

MSDN также говорит:

Параметры

exitCodeType: System.Int32

код выхода следует уделять операционной системе. Использование 0 (ноль) до означает, что процесс завершен успешно.

+0

вы хотите сказать мне, я намеренно вызываю ошибку? Кроме того, почему ошибка была случайной? Разве он не должен давать ошибку каждый раз? – ng80092b

+0

Пожалуйста, улучшите свое сообщение, прямо сейчас он не дает никаких намеков, почему программа OP зависает. –

+0

@ HansPassant, конечно, нет. Вот что я пытался выяснить. – ng80092b