2016-06-09 3 views
0

Я лазурный webjob, где есть функция вызывается лазурной очередьКак остановить выполнение очереди запуска на Azure Webjob

public class Functions 
{ 
    public static void ProcessQueueMessage([QueueTrigger("scannedcodes")] string message, TextWriter log) 
    { 
     // do something 
    } 
} 

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

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

+0

Так TimerTrigger работает в том же webjob? – Thomas

+0

Да, они работают вместе в одном и том же веб-задании – Matteo

ответ

0

Я хотел бы взглянуть на методы блокированного приращения и уменьшения, чтобы поддерживать общее количество активных процессов. В первой строке вашего метода вызовите Increment и в последней строке Decrement. Когда срабатывает событие таймера, проверьте текущее значение счетчика и либо дождайтесь, когда оно будет 0, либо ничего не сделайте.

https://msdn.microsoft.com/en-us/library/system.threading.interlocked_methods(v=vs.110).aspx