如何在Azure Webjob上停止队列触发器执行

时间:2016-06-09 13:52:10

标签: azure-webjobs azure-queues

我是一个天蓝色的webjob,其中有一个由天蓝色队列触发的功能

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

在此应用程序中,还有一个间隔为5分钟的计时器。当触发计时器的Elapsed事件时,我需要在事件处理程序中执行某些操作,该事务处理程序需要队列触发的方法未运行。

真正的问题是队列触发器运行16个并行线程,因此每个线程都可以处理队列消息。所以我需要所有线程都没有运行来执行定时器事件处理程序的代码。

1 个答案:

答案 0 :(得分:0)

我将看看Interlocked Increment和Decrement方法,以保持活跃进程的总计。在方法的第一行,调用Increment,在最后一行调用Decrement。当计时器事件触发时,检查计数器的当前值,并等待它为0或什么都不做。

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