Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
14 / 14 / 7
Регистрация: 23.11.2009
Сообщений: 63

Закрытие программы

30.09.2011, 07:23. Показов 3006. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите как отловить отключение программы(нажатие на крестик), а также после этого запустить отдельный поток.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.09.2011, 07:23
Ответы с готовыми решениями:

Ввод текста. Закрытие программы. Запуск программы. Введенный ранее текст уже открыт
Здравствуйте. Подскажите, как сделать "Ввод текста. Закрытие программы. Запуск программы. Введенный ранее текст уже открыт." То...

Закрытие программы
Сделал так чтобы при закрытии программы появлялось окно "Вы точно хотите выйти?" и две кнопки на нём "Да" и "Нет"....

Принудительное закрытие программы
Всем доброго времени суток!!! Есть многопользовательские приложение, которое подключается к Бд access Как сделать так, что бы программа...

4
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
30.09.2011, 10:19
Есть событие Form1_FormClosing перед закрытием и Form1_FormClosed после закрытия


C#
1
2
3
4
5
6
7
8
9
10
  private void Form1_FormClosing(object sender, FormClosingEventArgs e)
     {
         if (DialogResult.Cancel == MessageBox.Show("Вы действительно хотите выйти ?", "Программа",
         MessageBoxButtons.OKCancel, MessageBoxIcon.Question)) e.Cancel = true; 
     }
 
   private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
           //Запустить новый поток 
        }
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
30.09.2011, 23:09
При этом после запуска нового потока надо будет заблокировать дальнейшее выполнение метода Form2_FormClosed до тех пор, пока поток не завершит свою работу.
В противном случае после отключения программы все созданные ею потоки будут убиты.
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
30.09.2011, 23:33
Цитата Сообщение от kolorotur Посмотреть сообщение
При этом после запуска нового потока надо будет заблокировать дальнейшее выполнение метода Form2_FormClosed до тех пор, пока поток не завершит свою работу. В противном случае после отключения программы все созданные ею потоки будут убиты.
Думаю вполне разумно сделать как-то так:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            MainForm mainForm = new MainForm();
            mainForm.FormClosing += new FormClosingEventHandler(mainForm_FormClosing);
            mainForm.FormClosed += new FormClosedEventHandler(mainForm_FormClosed);
            Application.Run(mainForm);
        }
 
        static int counter = 0;
        static bool needExit;
        static void mainForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            Thread thr = new Thread(new ThreadStart(() =>
                {
                    while (!needExit)
                    {
                        Thread.Sleep(1000);
                        if (++counter > 3)
                        {
                            needExit = true;
                            MessageBox.Show("Выход из программы");
                        }
                    }
                }));
            thr.Start();
        }
 
        //Ну или этот метод внутри формы определять
        static void mainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            
        }
    }
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.10.2011, 00:14
Как вариант, можно воспользоваться классом ManualResetEvent

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ManualResetEvent workDone = new ManualResetEvent(false);
void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
   new Thread(DoWork).Start();
   workDone.WaitOne();
}
 
void DoWork()
{
   try 
  {
      spamBot.OpenNewPages("http://www.my-company-info.com", 100500);
   }
   finally
   {
      workDone.Set();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2011, 00:14
Помогаю со студенческими работами здесь

Закрытие программы с названием
Здраствуйте, у меня появился вопрос, как можно по названию окна узнать ID процесса и после этого закрыть этот процесс?

Событие на закрытие программы
У меня есть главная программа на XNA 4.0, которая открывает другую программу Windows Forms (будем называть её второй программой),...

Закрытие консоли во время выполнения программы
Консоль закрывается до того, как выполнится вся программа. В коде написаны комментарии и место, после которого операторы не выполняются и...

Закрытие программы при закрытии explorer
Рад приветствовать тех, кто зашёл на данную тему, ведь у меня возникла одна не большая проблема. Основная суть. Я написал одну программу...

Как отключить закрытие программы кнопками Alt + F4?
Как отключить закрытие программы кнопками Alt + F4? Если не затруднит киньте исходник пустой формы с отключённой Alt + F4


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru