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

Событие закрытия консольного приложения

23.07.2019, 01:21. Показов 6166. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Какой есть способ (желательно не слишком огромный) определять, когда закрывается приложение (консольное или нет) ЛЮБЫМ способом, будь то завершение из кода, будь то остановка дебага, будь то закрытие на крестик, ctrl+C в консоли или вовсе убийство процесса в диспетчере задач (на счёт последнего не уверен), ибо у меня висят сторонние потоки и нужно правильно обработать их завершение при закрытии основного приложения любым путём
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.07.2019, 01:21
Ответы с готовыми решениями:

Парсинг стороннего консольного приложения
Есть приложения написанное на Java, моя задача парсить всё что идёт у неё в консоли посредством C#, возможно ли это и если возможно то как?...

Файл настроек для консольного приложения
День добрый форумчане! Как мне создать файл настроек, в котором будут такие параметры как в классе? using System; using...

Входные/выходные данные консольного приложения
Есть некое консольное приложение namespace SomeApp { class SomeClass { static void Main(string args) { ...

7
79 / 49 / 23
Регистрация: 15.07.2018
Сообщений: 255
23.07.2019, 11:41
Nordicus666, Вот один из возможных вариантов:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
 
namespace ConsoleApplication116_SignalRClient
{
    internal class ExternTest
    {
        [DllImport("User32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(IntPtr h, string m, string c, int type);
 
        private static void Main()
        {
            Process process = new Process();
            process.EnableRaisingEvents = true;
            process.StartInfo.FileName = "cmd.exe";
            process.Exited += delegate
            {
                MessageBox((IntPtr)0, "Cmd is closed!", "Message", 0);
            };
            process.Start();
            process.WaitForExit();
        }
    }
}
0
Эксперт .NET
 Аватар для Rius
13165 / 7725 / 1679
Регистрация: 25.05.2015
Сообщений: 23,535
Записей в блоге: 14
23.07.2019, 11:59
Nordicus666,
Определить, что ваше приложение закрывают? Или, что запущенное из вашего приложения закрывают?

Добавлено через 49 секунд
Get_Over_Here, а не проще System.Windows.Forms подключить и вызвать оттуда MessageBox?
0
79 / 49 / 23
Регистрация: 15.07.2018
Сообщений: 255
23.07.2019, 12:04
Rius, Конечно проще, но зачем подключать лишнюю сборку?
0
Эксперт .NET
 Аватар для Rius
13165 / 7725 / 1679
Регистрация: 25.05.2015
Сообщений: 23,535
Записей в блоге: 14
23.07.2019, 12:08
Она уже установлена и входит в тот же фреймворк, на котором всё работает.
А вот зачем в C# программе лишний раз вызывать WinAPI через P/Invoke, когда для того же есть встроенные средства?
0
79 / 49 / 23
Регистрация: 15.07.2018
Сообщений: 255
23.07.2019, 12:10
Rius, Да будет так!
0
7 / 7 / 0
Регистрация: 05.04.2016
Сообщений: 410
23.07.2019, 15:40  [ТС]
Нет, нужно ловить момент закрытия оригинального приложения, у меня нет никакого древа из приложений, т.е. (на данный момент) есть просто одно консольное приложение, содержащее много потоков (сервер это, многопоточный, 2 потока плюс по потоку на каждого клиента), но при закрытии приложения у меня не вызывается деструкторы классов и сокеты не закрываются, вылетают ошибки, мне нужно определять когда закрывается любым путём моё приложение и в этот момент вручную закрывать все соединения
0
Эксперт .NET
 Аватар для Rius
13165 / 7725 / 1679
Регистрация: 25.05.2015
Сообщений: 23,535
Записей в блоге: 14
23.07.2019, 21:07
Nordicus666, попробуйте SetConsoleCtrlHandler function:
Какое возникает событие, если завершить процесс приложения
Перехват закрытия приложения
Действие при завершении работы программы
Возможно ли добавить задержку перед закрытием программы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.07.2019, 21:07
Помогаю со студенческими работами здесь

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

Контроль USB-портов из консольного приложения
Здравствуйте всем. Вот какой вопрос: Как можно принимать сообщения системы типа: DBT_DEVICEARRIVAL или WM_DEVICECHANGE не используя ...

Перенаправление вывода консольного приложения в WinForm
Добрый день! Имеется программа AVRDude. Консольный вариант. Делаю перенаправление вывода с этого консольного приложения в WinForm. Все ...

Отслеживание закрытия стороннего приложения
Всем доброго времени суток. Нужно реализовать программу последовательного открытия .exe файлов. То есть указать 2 пути к файлам. После чего...

Запуск стороннего консольного приложения и взаимодействие с ним
Здравствуйте. Есть консольное приложение. Могу ли я вызвать его из своего консольного приложения и отправлять ему команды? + получать от...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru