Использование таймера времени в Azure

1

У меня есть моя рабочая роль, и мне нужно выполнять конкретную задачу ровно в 10 часов каждый день.

public class WorkerRole : RoleEntryPoint
{
    public override void Run()
    {                  
        while (true)
        {
            if (DateTime.Now.Hour == 10)
            {
                //Do Specific timer Job();
            }
            //Do Normal Worker process();

            Thread.Sleep(TimeSpan.FromMinutes(1));

        }
    }

Это запускает задание таймера несколько раз, так как я получаю только час, я не могу просто проверить его с конкретным временем, скажем, 10.00, так как есть вероятность, что он может быть пропущен основным рабочим процессом.

Мне нужно знать идеальный способ реализовать это.

Я видел эту ссылку и упоминал в ответах,

Как назначить задачу в роли рабочего рабочего окна azure

Но мне нужно решение без использования лазурного планировщика или любого стороннего инструмента: (В любом случае, с помощью которого я могу использовать таймеры для проверки в определенное время?

  • 0
    Разве вы не можете использовать библиотеку Quartz.Net, указанную в указанной вами ссылке? Это открытый исходный код, чрезвычайно надежный и легко настраиваемый.
Теги:
azure
timer
scheduler

2 ответа

1

Возможно, вы можете использовать Azure WebJobs

http://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/#Scheduler

А также, сегодня сообщение от Скотта Гензельмана с различными библиотеками, включая Quartz.Net от предыдущего комментатора.

http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx

0

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

public class WorkerRole : RoleEntryPoint
{
    public override void Run()
    {                  
        while (true)
        {
            CloudQueueMessage queuemessage = queuestorage.GetMessage(queue name)
            if(queueMessage.exist && queueMessage insertion time < 10 am today)
            {
                if (DateTime.Now.Hour >= 10)
                {
                    //Do Specific timer Job();
                    //Delete the queue message and insert new one for the task next day.
                }
            }

            //Do Normal Worker process();

            Thread.Sleep(TimeSpan.FromMinutes(1));

        }
    }
}
  • 0
    Но создание еще одной очереди для этого требует дополнительных цен, верно? Я ищу может быть менее простой подход.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню