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

Тема в разделе ".NET", создана пользователем Tolias, 25 янв 2012.

  1. Tolias

    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. Как перехвачивать закрытие приложения с формой, я знаю. Но просто в моем приложении нет формы...
     
  2. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Возможно, тут найдется что-то полезное.
     
  3. Tolias

    Tolias Гость

    Первый пример с использованием AppDomain.CurrentDomain.ProcessExit у меня не работает. Это событие не происходит при закрытии приложения.

    А примеры ниже для консольных приложений..
     
  4. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Если у вас приложение без форм, может, есть смысл как раз сделать его консольным?
     
  5. Tolias

    Tolias Гость

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

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Я так понимаю, да: ссылка
     
  7. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    У Application есть ApplicationExit иент, не подойдет?

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

Поделиться этой страницей