C # - Планирование задач - PullRequest
       13

C # - Планирование задач

1 голос
/ 19 августа 2011

Я использую Asp.Net - Веб-формы - Framework 3.5

Я хочу отправлять электронные письма пользователям сайта в 12 часов ночи. Я создал метод класса, который отправляет электронные письма, но как лучше автоматически выполнить его в полночь?

В Linux у нас есть cron-задания, что на windows как на выделенном, так и на общем сервере?

Ответы [ 8 ]

3 голосов
/ 19 августа 2011

Самый простой способ - написать небольшое приложение командной строки, которое отправляет электронные письма, а затем использовать Планирование задач Windows для запуска приложения каждый день в полночь.

2 голосов
/ 19 августа 2011

На общем хосте без доступа к планировщику задач я часто помещал некоторый код в Global.asax, который создавал бы новый статический объект Timer в OnStart приложения.Затем я запускаю метод класса каждый час или около того, когда истекает таймер.

Недостатком этого является то, что вы должны поддерживать пул приложений в режиме 24/7, иначе он будет работать быстрее и ваш код не будет выполняться ежечасно.

Альтернативой может бытьсделать страницу, которая запускает код из вашего метода класса, и автоматически запускать эту страницу из внешнего источника в полночь каждую ночь.Вы можете просто настроить скрипт wget / curl, чтобы программно попасть на этот URL.

Наконец, у вас есть другие решения, как подробно описано в этом другом посте: Можете ли вы запустить «службу», которая запускает запланированное задание из проекта ASP.Net?

2 голосов
/ 19 августа 2011

В качестве замены cron вы можете попробовать команду at и запустить некоторый исполняемый файл, который будет отправлять электронную почту, или вы можете создать службу Windows, чтобы выполнить эту работу.

1 голос
/ 19 августа 2011

Создание службы Windows, периодически вызывающей код для отправки электронных писем, сделает эту работу.

0 голосов
/ 23 октября 2011

Если вам нужно запустить запланированное задание / задание cron в среде общего хостинга, вы найдете список бесплатных поставщиков заданий веб-cron здесь: ASP.NET: бесплатное планирование ваших задач (задания Cron)

0 голосов
/ 19 августа 2011

Создайте свое приложение в службе Windows и в файле app.config, используйте таймер и установите таймер на 12 часов ночи.

0 голосов
/ 19 августа 2011

У меня был некоторый успех при использовании Quartz.NET, но простейший способ сделать это - планировщик задач и простая комбинация приложений командной строки, предложенная другими.

0 голосов
/ 19 августа 2011

Вы можете использовать планировщик заданий, который является эквивалентом chron, или вы можете написать службу Windows, которая периодически проверяет время и, если это после полуночи, может отправлять электронные письма.

Вы не можете сделать это из своей веб-формы, потому что этот код выполняется только тогда, когда пользователь находится на сайте, и очень плохая практика оставлять поток работающим; В любом случае, я бы его переработал.

...