У меня есть приложение .Net Windows, которое постоянно обрабатывает данные. Я иногда получаю проблемы, потому что пользователь случайно запустил 2 экземпляра. Я добавил код, чтобы предотвратить запуск второго экземпляра. Я обычно прекращаю это сам, используя Диспетчер задач> Завершить процесс. Есть ли лучший способ завершить программу, чем этот? Желательно что-то, что я могу добавить в планировщик заданий для ночного запуска.
2 ответа
Вы определили несколько вещей, связанных с управлением процессами, которые вы хотели бы, чтобы ваше приложение могло выполнять. Вы также упомянули, что хотите, чтобы это было высоко автоматизировано (вы хотите автоматически убивать его через регулярные промежутки времени). Для этого вы будете использовать «Запланированное задание».
Я предлагаю вам на самом деле лучше использовать «Планировщик заданий». Вы можете настроить его так, как вам нравится. Тогда вместо вызова вашего приложения вы можете просто вызвать «Запланированное задание». Это даст вам много преимуществ. Не в последнюю очередь из-за того, что полностью внедренный графический интерфейс достаточно прост для любого системного администратора, чтобы настроить его под свои нужды (и они, скорее всего, к этому уже привыкли).
Даже часть единственного экземпляра вашего приложения могла бы быть выполнена только с помощью «Запланированных задач» (но лучше использовать оба способа; чтобы быть уверенным, нет, можно просто сделать копию задачи и запустить ее, чтобы обойти правило).
Используя выпадающий список, вы можете выбрать, как ваше приложение перерабатывает свои процессы. Не изображено - это опция для Stop the new Instance
который вы сейчас делаете с вашим кодом. Разница в том, что этот параметр специфичен для задачи; не все приложение (что может быть недостаточно хорошо).
Если вы установили флажок «Разрешить запуск задачи по требованию», вы можете запустить задачу из командной строки следующим образом:
schtasks /Run /TN "task name"
Если вы хотите прекратить это, используйте:
schtasks /End /TN "task name"
После настройки запланированное задание можно легко экспортировать в другие системы. Right click
на задаче и выберите « Export...
когда она будет работать. Этот файл впоследствии можно добавить в любую систему с помощью команды Import ... :
schtasks /Create [/S <system> [/U <username> [/P [<password>]]]] /XML <xmlfile> /TN <taskname>
Мы рассмотрели только некоторые из доступных вариантов, которые у вас есть здесь. Вы никогда не знаете, как люди будут нуждаться в использовании вашего приложения в будущем, и это позволяет вам иметь множество функций бесплатно. Вы можете запланировать это, или вы можете просто запустить его вручную. Это зависит от вас (и, в конечном счете, от конечного пользователя; как правило, это хорошо).
Есть пара малоизвестных программ командной строки, которые делают то, что делает Task Manager, tasklist
и taskkill
. Используйте ключ /im
чтобы указать имя процесса.