Эта концепция не требует многопоточности ...
Эта концепция больше похожа на Task Manager / Cron Job
- Создайте сценарий ASPX, который видит время и выполняет необходимый метод
- Настройка диспетчера задач для запуска этого скрипта каждые хх минут
- Создайте метод, который выбирает список людей и отправляет SMS через SMS API, и вызывает его, например, SendSMSFromList (список usersList, строковое сообщение) {}
- Теперь настройте все и вы запустите это в любое время (просто установите это в скрипте ASPX)
пожалуйста, не стесняйтесь, сообщите мне, если вам нужен какой-либо код для этого.
отредактировано для выполнения всех шагов
Если у вас есть размещенное решение, в панели управления хостингом у вас есть что-то вроде Расписание задач , которое вы можете настроить для запуска своей страницы скрипта каждые n минут, если так, пожалуйста, пропустите следующие шаги. Если, с другой стороны, вы используете свой собственный сервер (IIS), сделайте это сначала.
- Установите cUrl для Windows из этого местоположения и добавьте curl.exe в C: \ WINDOWS
- Открыть диспетчер задач (Панель управления> Администрирование> Планировщик задач на win7)
- Создать новое задание вот так
- Запустить команду
завиток http://localhost/yourApp/taskManager.aspx
при этом вы только что настроили свою систему для запуска файла, как если бы вы выполняли эту ссылку в браузере, она будет запускаться каждые 15 минут.
Теперь нам нужно создать этот файл taskManager.aspx
public partial class taskManager : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
// Run after midnight
if (dt.Hour == 0 && dt.Minute <= 15)
{
Write2Log("Schedule Job Started", LogType.INFO);
SendSMSFromList(
GetUsersList(),
GetSMSMessage());
Write2Log("Schedule Job Finished", LogType.INFO);
}
}
private string GetSMSMessage()
{
// Fetch the text from DB...
return "This is the message content that I will send as SMS";
}
private List<string> GetUsersList()
{
// fetch the list form DB...
return new List<string>();
}
private void SendSMSFromList(List<string> usersList, string message)
{
// send SMS's
foreach (string phoneNr in usersList)
{
// send message
mySMSAPI.Send(phoneNr, message);
}
}
private void Write2Log(string text, LogType type)
{
// Log to a file what's going on...
try
{
string filename = HttpContext.Current.Server.MapPath("") + "\\status.log";
using (StreamWriter sw = new StreamWriter(filename, true)) // open to append
{
// example: 2008-12-17 13:53:10,462 INFO - Schedule Job Finished
string write = String.Format("{0} {1} - {2}",
DateTime.Now,
type.ToString(),
text);
sw.WriteLine(write);
}
}
catch (Exception)
{ }
}
private enum LogType
{ INFO, WARNING, ERROR }
}
Готово ...
Я сделал все в одном файле ради примера, вы должны разделить вещи ... но я хотел показать вам принцип этого.