Около 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 .