![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.08.2010
Сообщений: 41
|
![]()
Я на C# создал приложение, выбрав проект WindowsForms. Но так как моя программа не должна иметь никаких окон, я удалил Form1.cs, а код своей программы поместил в функции Main() типа так:
PHP код:
Мне надо так сделать, чтобы при выключении компьютера, когда система посылает всем программам команду закрыться, чтобы в этот момент моя программа перед своим закрытием сбрасывала содержимое всех буферов файлового потока в файл (то есть, выполнялась функция Flush()), а то сейчас получается неприятная ситуация, что мое приложение виндой убивается, и все данные, что должны были записаться в файл, но остались в буфере файлового потока, так и пропадают, не записавшись в файл. Как перехватить закрытие приложения? P.S. Как перехвачивать закрытие приложения с формой, я знаю. Но просто в моем приложении нет формы... |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 15.12.2010
Сообщений: 398
|
![]() Код:
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
![]()
Я бы сохранял после каждой записи, т.к. есть еще экстренное закрытие программы, т.е. просто убить процесс.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 15.12.2010
Сообщений: 398
|
![]()
Правильно говорит, а закрывать поток только в Application_ApplicationExit
|
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 18.08.2010
Сообщений: 41
|
![]() Цитата:
Но кроме этого нужно еще сбросить его перед закрытием процесса, над чем я сейчас и борюсь.. |
|
![]() |
![]() |
![]() |
#6 | |
Пользователь
Регистрация: 18.08.2010
Сообщений: 41
|
![]() Цитата:
Я также пробовал подписываться на другие события, такие как Application.ThreadExit и AppDomain.CurrentDomain.ProcessExit , но ни то ни другое событие не происходит при закрытии приложения виндой. Уже надоело из-за этих тестов комп перезагружать... А как можно еще послать команду приложению закрыться, чтобы компьютер перезагрузками не мучать? Я для тестов написал вот такое приложение для послания команды закрыться: PHP код:
Если я для примера напишу в processPath "notepad.exe", то он кнопкой Run запускается и кнопкой Exit закрывается. А если FSEvents.exe написать, то открывать он его открывает, а кнопка Exit не действует на него никак =-O То есть, приложение FSEvents.exe продолжает работать. Последний раз редактировалось Tolias; 26.01.2012 в 02:54. |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 18.08.2010
Сообщений: 41
|
![]()
Вот полный код моего приложения FSEvents. Может я где-то и накрутил, из-за того и не работает событие... Покажите пожалуйста.
PHP код:
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 18.08.2010
Сообщений: 41
|
![]() PHP код:
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 15.12.2010
Сообщений: 398
|
![]()
Может так поможет, проверить нету возможности
Код:
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 18.08.2010
Сообщений: 41
|
![]()
Guy, спасибо. Но по прежнему не срабатывает. Я кажется понял, что проблема вовсе не в моем приложении. Потому что я даже отсюда брал пример, переделал его для одной формы и если послать ему команду закрыться из другого приложения, событие ApplicationExit срабатывает и приложение сбрасывает все буферы потоков (то есть, все пучком). Но стоит мне это приложение оставить открытым и выключить компьютер, как оно просто завершается без всяких событий ApplicationExit. По ходу, как я понял, винда нагло убивает приложения, не дожидаясь их нормально выключения и рыть мне надо настройки винды, а не исходники своего приложения. Наверное я буду привязываться к другому событию - изменения питания. Оно то точно происходит при выключении, уже проверял.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как перехватить нажатие клавиш в Windows? | JoanM | Win Api | 15 | 31.05.2013 14:42 |
Как перехватить событие формы (Движение) | ImmortalAlexSan | Общие вопросы Delphi | 12 | 02.01.2011 11:36 |
как определить закрытие приложения | Анастасия123456789 | Помощь студентам | 3 | 02.05.2009 16:32 |
как подождать о определить закрытие приложения | Анастасия123456789 | Общие вопросы Delphi | 1 | 02.05.2009 16:30 |
Как перехватить нажатие клавиши Windows? | UnD)eaD)Snake | Win Api | 3 | 16.03.2009 18:21 |