Ошибка в FormClosingEventArgs.CloseReason?

Требования, с которыми я столкнулся

Около 12 человек используют это приложение, но мы хотим, чтобы только 4 закрывали приложение традиционными методами (Alt + F4, File> Exit , Close)

Если используется какой-либо другой метод (TaskManager, WindowsShutdown) или один из разрешенных пользователей закрывает приложение, нам необходимо выполнить некоторую очистку (закрытие некоторых каналов подключения)

Код, который я использовал для удовлетворения указанных требований

private void formClosing(object sender, FormClosingEventArgs e)
{
    // If a user is allowed to close the application, an empty file (filename)
    // will be in the root directory of the application.
    if(e.CloseReason == CloseReason.UserClosing && !File.Exists("filename"))
    {
        e.Cancel = true;
        return;
    }

    // Cleanup
}

Проблема

Если пользователь (которому не разрешено закрытие) пытается закрыть приложение традиционными методами, затем пытается закрыть приложение с помощью диспетчера задач, перечисление CloseReason не отображается для сброса самого себя, в результате чего диспетчер задач выводит запрос на принудительное закрытие, не позволяя приложению f ROM уборка.

Вопрос

Это ошибка, или я что-то упустил, что-то, что сбросит CloseReason после отмены события FormClosing .

6
задан Slipfish 2 September 2010 в 21:36
поделиться