Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950

Как завершить процесс, когда ВСЕ формы закрыты?

22.09.2017, 07:37. Показов 5800. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас у меня при запуске программы открывается форма авторизации. Получается, что она главная и процесс завершается только в том случае, если я через крестик закрываю именно эту форму.
Но ведь после авторизации эта форма скрывается и ее больше никак не открыть. И получается, что если я закрываю все остальные формы, то процесс не убивается.
Так вот, как завершить процесс, если закрыты абсолютно все формы программы?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2017, 07:37
Ответы с готовыми решениями:

Разрешить закрытие формы при условии, что все другие формы закрыты
Нужно создать событие, при котором приложение не завершается, пока все формы не будут закрыты. private void frMain_FormClosing(object...

Как завершить все потоки при закрытии формы?
Подскажите как завершить все потоки при закрытии формы?

Как завершить поток из другой формы?
Имеется поток запущенный в Form1: Thread Worker = new Thread(Work); Worker.Start(); private void Work() { } ...

11
Unnamed
 Аватар для kingzfate
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
22.09.2017, 07:44
DenKG, проверяете есть ли еще запущенные формы, если нет, то используете событие FormClose
C#
1
2
Process.Kill (Ваш процесс)
или Application.Exit();
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
22.09.2017, 08:06  [ТС]
kingzfate, а как написать обработчик для крестика?
0
Unnamed
 Аватар для kingzfate
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
22.09.2017, 08:30
DenKG, вы переопределить что ли хотите нажатие на эту кнопку?
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
22.09.2017, 08:31  [ТС]
kingzfate, нет, я просто хочу, чтобы при закрытии абсолютно всех окон завершался процесс.
Но я не очень понимаю, куда вставлять ваш код.
0
Unnamed
 Аватар для kingzfate
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
22.09.2017, 11:15
DenKG, На кнопку перехода между формой просто повесьте это
C#
1
2
3
4
Form1.ActiveForm.Hide();
            Form2 MyForm2 = new Form2();
            MyForm2.ShowDialog();
            Close();
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18262 / 14187 / 5366
Регистрация: 17.03.2014
Сообщений: 28,872
Записей в блоге: 1
22.09.2017, 13:56
DenKG, это происходит потому что форма скрывается, а не закрывается. Нужно её закрывать. Причем сразу как только она перестала быть нужна. Один их самых простых способов это изменение метода Main.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    using (var authForm = new AuthForm())
    {
        if (authForm.ShowDialog() != DialogResult.OK)
        {
            return;
        }
    }
    Application.Run(new MainForm());
}
Форма AuthForm должна быть написана так чтобы возвращать правильный DialogResult при закрытии: OK если авторизация пройдена, иначе Cancel. Если нужно получить из неё информацию о пользователе, то делаем примерно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    MyUser user;
    using (var authForm = new AuthForm())
    {
        if (authForm.ShowDialog() != DialogResult.OK)
        {
            return;
        }
        user = authForm.User;
    }
    Application.Run(new MainForm(user));
}
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
25.09.2017, 10:40  [ТС]
kingzfate, тогда у меня форма авторизации не закрывается, а просто становится неактивной, но не убирается с экрана.
0
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
25.09.2017, 11:48
Цитата Сообщение от DenKG Посмотреть сообщение
Так вот, как завершить процесс, если закрыты абсолютно все формы программы?
процесс жив, пока хотя исполняется хотя бы один не фоновый поток. и судя по всему, у вас именно этот случай.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
25.09.2017, 12:50
Цитата Сообщение от DenKG Посмотреть сообщение
тогда у меня форма авторизации не закрывается, а просто становится неактивной, но не убирается с экрана.
Т.е. у вас просто программа из десятка окон, каждый для своей задачи? Вариант предложеный OwenGlendower самый оптимальный т.к. :
- у вас на экране окно регистрации только тогда, когда оно реально требуется.
- его можно спокойно вызвать в любой другой точке программы таким же способом.
- оно не занимает ресурсы, когда не активно.
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
25.09.2017, 15:22  [ТС]
Wolfdp, окно авторизации появляется только при запуске и после авторизации оно больше не нужно совсем.
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
27.09.2017, 07:32  [ТС]
OwenGlendower, при использовании вашего варианта после прохождения авторизации появляется сообщение о том, что приложение находится в режиме приостановки выполнения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.09.2017, 07:32
Помогаю со студенческими работами здесь

Иногда играет звуковая реклама. Даже когда все программы закрыты
Здравствуйте! Время от времени играет звуковая реклама. Даже когда все программы закрыты.

Как завершить лишний процесс?
Всем привет!! задача такая: нужно нацарапать такой батник, что бы он убивал лишний процес типа pskill...

Как завершить процесс Excel
При таком подходе остаётся висеть процесс Excel'я. Как завершить этот процесс после записи в файл? Не нужно задавать свои вопросы в чужих...

Как завершить неубиваемый процесс?
Нашёл в инете код, который делает процесс неубиваемым: function ZwSetInformationProcess(cs1:THandle; cs2:ULONG; cs3:Pointer;...

Как завершить процесс антивируса?
Я делая прогу чат через инет а антивирус ругается на него!!! Люди как с силой завершить процесс антивируса который не завершается и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru