Как Перехватить Закрытие Windows-приложения Без Формы?

  • Автор темы Tolias
  • Дата начала
T

Tolias

#1
Я на C# создал приложение, выбрав проект WindowsForms. Но так как моя программа не должна иметь никаких окон, я удалил Form1.cs, а код своей программы поместил в функции Main() типа так:
<!--shcode--><pre><code class='c#'>static void Main()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "C:\\";
watcher.NotifyFilter = NotifyFilters.LastAccess;
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);

Application.SetCompatibleTextRenderingDefault(false);
Application.Run();
}[/CODE]
после Мейна идут фукнции-обработчики событий, который пишут все в текстовый файл.
Мне надо так сделать, чтобы при выключении компьютера, когда система посылает всем программам команду закрыться, чтобы в этот момент моя программа перед своим закрытием сбрасывала содержимое всех буферов файлового потока в файл (то есть, выполнялась функция Flush()), а то сейчас получается неприятная ситуация, что мое приложение виндой убивается, и все данные, что должны были записаться в файл, но остались в буфере файлового потока, так и пропадают, не записавшись в файл.

Как перехватить закрытие приложения?

P.S. Как перехвачивать закрытие приложения с формой, я знаю. Но просто в моем приложении нет формы...
 

LuMee

Well-known member
02.05.2006
477
0
#4
Если у вас приложение без форм, может, есть смысл как раз сделать его консольным?
 
T

Tolias

#5
Если у вас приложение без форм, может, есть смысл как раз сделать его консольным?
А разве можно сделать консольное приложение скрытым, чтобы при запуске не было консольного окна, и единственное место, где можно было увидеть это приложение, это в списке процессов Диспетчера задач Windows?
 

-master-

Well-known member
14.01.2012
616
12
#7
У Application есть ApplicationExit иент, не подойдет?

А ваще подумайте переделать это как вин-сервис, на сколько я понял задачу.