Я хочу, чтобы мое приложение WPF запускалось только один раз. У меня нет проблем с этим. Моя проблема в том, как я могу определить, перезапускаются ли в данный момент окна?
Вы можете записать файл на диск, а затем сразу пометить его как «удалить при перезагрузке», используя MoveFileEx:
Итак, в psuedocode:
if(File.Exists(CheckFileName)) return false; // already ran once else { // write out the check file using(checkFile = File.Create(CheckFileName, ...)) { // and mark it as delete on boot MoveFileEx(checkFile.SafeHandle, null, MOVEFILE_DELAY_UNTIL_REBOOT); return true; // ok to run } }
Вы можете проверить и сохранить время работы системы вместе с последним временем работы и сравнить его с текущим временем работы.
Восстановление работоспособности системы с использованием C #
Какой-то псевдокод:
DateTime computerLastStarted = Now - Uptime; if (computerLastStarted > storedComputerLastStarted + or - tollerance) { storedComputerLastStarted = computerLastStarted; StartProgram(); }