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

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

Tolias

Я на 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. Как перехвачивать закрытие приложения с формой, я знаю. Но просто в моем приложении нет формы...
 
Возможно, найдется что-то полезное.
 
Возможно, найдется что-то полезное.
Первый пример с использованием AppDomain.CurrentDomain.ProcessExit у меня не работает. Это событие не происходит при закрытии приложения.

А примеры ниже для консольных приложений..
 
Если у вас приложение без форм, может, есть смысл как раз сделать его консольным?
 
Если у вас приложение без форм, может, есть смысл как раз сделать его консольным?
А разве можно сделать консольное приложение скрытым, чтобы при запуске не было консольного окна, и единственное место, где можно было увидеть это приложение, это в списке процессов Диспетчера задач Windows?
 
У Application есть ApplicationExit иент, не подойдет?

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!