Переупорядочение элементов списка с помощью интерфейса перетаскивания, используемого большим количеством людей (популярное приложение для пар), Avocado, использует вариант меню гамбургера (четыре строки вместо трех):
В классе Environment есть свойство, которое сообщает, начался ли процесс выключения:
Environment.HasShutDownStarted
Но после некоторого поиска в Google я обнаружил, что это может быть вам полезно :
using Microsoft.Win32;
//during init of your application bind to this event
SystemEvents.SessionEnding +=
new SessionEndingEventHandler(SystemEvents_SessionEnding);
void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
if (Environment.HasShutdownStarted)
{
//Tackle Shutdown
}
else
{
//Tackle log off
}
}
Но если вы хотите очистить только временный файл, я думаю, что различие между завершением работы и выходом из системы не имеет для вас никакого значения.
Если вам конкретно нужно событие выхода из системы, вы можете изменить код, указанный в ответе TheVillageIdiot, следующим образом:
using Microsoft.Win32;
//during init of your application bind to this event
SystemEvents.SessionEnding +=
new SessionEndingEventHandler(SystemEvents_SessionEnding);
void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
if (e.Reason == SessionEndReasons.Logoff)
{
// insert your code here
}
}
Вы можете использовать WMI и смотреть Win32_ComputerShutdownEvent, где Type равен 0. Вы можете найти дополнительную информацию об этом событии здесь , а также больше об использовании WMI в .NET здесь .