Значение «this» зависит от «контекста», в котором выполняется функция. Контекстом может быть любой объект или глобальный объект, т. Е. Окно.
Таким образом, семантика «этого» отличается от традиционных языков ООП. И это вызывает проблемы: 1. когда функция передается другой переменной (скорее всего, обратный вызов); и 2. когда замыкание вызывается из метода-члена класса.
В обоих случаях это устанавливается в окно.
Установите сервис для перезапуска после отказа (дважды щелкните по сервису в панели управления и взгляните вокруг на те вкладки - я забываю название его). Затем каждый раз, когда Вы хотите, чтобы сервис перезапустил, просто звоните Environment.Exit(1)
(или любой ненулевой возврат), и ОС перезапустит его для Вас.
Лучший подход может быть должен использовать Сервис NT как обертку для Вашего приложения. Когда Сервис NT запускается, Ваше приложение может начать в "неактивном" режиме, ожидающем команды запускаться (или настраиваться для запуска автоматически).
Думают об автомобиле, когда он запустился, он начинается в состоянии ожидания, ожидающем Вашей команды, чтобы продвинуться или инвертировать. Это также допускает другие преимущества, такое так лучшее удаленное администрирование, как можно выбрать, как выставить приложение.
print 'Downloading.... \r'
) также doesn' t очищают предыдущие данные, но они предотвращают необходимость знать как далеко вплотную.
– cod3monk3y
19 February 2014 в 15:24
Я не думаю, что это может. Когда сервис "останавливается", он полностью разгружен.
ну, хорошо, всегда существует способ, которым я предполагаю. Например, Вы могли создать отдельный процесс для остановки сервиса, затем перезапустить его, затем выйти.
Это зависело бы от того, почему Вы хотите, чтобы это перезапустило себя.
, Если Вы просто ищете способ сделать, чтобы сервис вычистил себя периодически затем, у Вас мог быть таймер, работающий в сервисе, который периодически вызывает стандартную программу чистки.
при поиске способа перезапустить при отказе - сам сервисный хост может обеспечить ту способность, когда это - установка.
Итак, почему необходимо перезапустить сервер? Чего Вы пытаетесь достигнуть?
Я не думаю, что Вы можете в автономном сервисе (при вызове Перезапуска он остановит сервис, который прервет команду Restart, и он никогда не будет начинать снова). Если можно добавить второй .exe (Консольное приложение, которое использует класс ServiceManager), то можно начать автономный .exe и иметь его, перезапускают сервис и затем выходят.
Вообще-то, если задуматься, Вы могли, вероятно, сделать, чтобы сервис зарегистрировал Запланированную задачу (использующий командную строку 'при' команде, например), чтобы запустить сервис и затем иметь его сама остановка; это, вероятно, работало бы.
Вы не можете быть уверены, что учетная запись пользователя, под которой работает Ваша услуга даже, имеет полномочия остановить и перезапустить сервис.
Можно создать процесс, который является командной строкой DOS который перезапуски сами:
Process process = new Process();
process.StartInfo.FileName = "cmd";
process.StartInfo.Arguments = "/c net stop \"servicename\" & net start \"servicename\"";
process.Start();
Я использовал бы Windows Scheduler для планирования перезапуска сервиса. Проблема состоит в том, что Вы не можете перезапустить себя, но можно остановить себя. (Вы по существу отпилили сук, на котором Вы сидите..., если Вы получаете мою аналогию), Вам нужен отдельный процесс, чтобы сделать это для Вас. Windows Scheduler является соответствующим. Запланируйте одноразовую задачу перезапустить Ваш сервис (даже из самого сервиса) для выполнения сразу.
Иначе, необходимо будет создать процесс "выпаса", который делает это для Вас.
Самый простой способ - создать командный файл с:
net stop net start
и добавьте файл в планировщик с желаемым интервалом времени