| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > аналог exit() из С++ |
| Автор: Artiom 7.9.2005, 12:27 |
| собственно сабж. Как по условию завершить выполнение программы? Конечно, можно поставить условие типа if(pr){...}, но мне это очень неудобно. |
| Автор: mr.DUDA 7.9.2005, 12:36 |
| Application.Exit( ); |
| Автор: arilou 7.9.2005, 12:36 |
| Application.Exit подойдет? |
| Автор: Artiom 7.9.2005, 13:24 |
| это я видел. у меня консольное приложение, но никакого влияния Application.Exit() не оказывает. Все выполняется как и раньше |
| Автор: arilou 7.9.2005, 13:42 |
| А ты попробуй Application.Run использовать до того, как вызываешь Application.Exit |
| Автор: Artiom 7.9.2005, 14:09 |
| поставил Application.Run() в начале Main() - програма выполняется только до Application.Run() а затем запускается консольное окно и виснет. |
| Автор: mr.DUDA 7.9.2005, 16:06 |
| Тогда можешь такое использовать: System.Diagnostics.Process.GetCurrentProcess().Kill(); |
| Автор: Artiom 7.9.2005, 16:30 |
| Спасибо. Это работает. Хотя кажется немного странным убивать процесс здесь. |
| Автор: mr.DUDA 7.9.2005, 16:45 | ||
Нисколько. Если программа содержит процедуру, решающую "завершать программу или нет?", то существует два пути. Либо эта процедура приведёт к нормальному выходу из ф-ции Main(), либо нужно убивать текущий процесс (или текущий поток, если в программе исполняется только 1 поток). Первый вариант вы можете продумать сами, это зависит целиком от вашей фантазии как разработчика. Второй вариант - один, но есть много способов его реализовать: 1) убиваем все потоки по одному (соответственно, нужно перечислить все исполняющиеся потоки) 2) убиваете все потоки сразу, вызвав Process.Kill 3) с помощью объектов синхронизации (мьютексы, события) сигнализируете всем потокам, что пора закругляться, и они убивают сами себя (выход из основной ф-ции потока) |