2015-09-30 4 views
0

Я использую Service Bus of azure, который будет содержать мой список сообщений, означает, что сообщения могут входить в служебную шину в любое время.Как проверить прибытие сообщения в служебную шину каждые 20 секунд?

Так что я хочу следить за своей служебной шиной, чтобы проверить, есть ли какое-либо сообщение в сервисе или нет. Это похоже на то, что я просто хочу следить за моей служебной шиной относительно прибытия сообщения в свою служебную шину по адресу интервал 0f 20 секунд.

В Каждые 20 секунд я хотел бы проверить прибытие сообщения в моей служебной шине, и это я хочу выполнить в фоновом режиме асинхронно.

Я хочу назвать ниже метода каждые 20 секунд в фоновом режиме:

private static void ReceiveMessages() 
     { 
      // For PeekLock mode (default) where applications require "at least once" delivery of messages 
      SubscriptionClient agentSubscriptionClient = SubscriptionClient.Create(TopicName, "AgentSubscription"); 
      BrokeredMessage message = null; 
      while (true) 
      { 
       try 
       { 
        //receive messages from Agent Subscription 
        message = agentSubscriptionClient.Receive(TimeSpan.FromSeconds(5)); 
        if (message != null) 
        { 
         Console.WriteLine("\nReceiving message from AgentSubscription..."); 
         Console.WriteLine(string.Format("Message received: Id = {0}, Body = {1}", message.MessageId, message.GetBody<string>())); 
         // Further custom message processing could go here... 
         message.Complete(); 
        } 
        else 
        { 
         //no more messages in the subscription 
         break; 
        } 
       } 
       catch (MessagingException e) 
       { 
        if (!e.IsTransient) 
        { 
         Console.WriteLine(e.Message); 
         throw; 
        } 
        else 
        { 
         HandleTransientErrors(e); 
        } 
       } 
      } 

      // For ReceiveAndDelete mode, where applications require "best effort" delivery of messages 
      SubscriptionClient auditSubscriptionClient = SubscriptionClient.Create(TopicName, "AuditSubscription", ReceiveMode.ReceiveAndDelete); 
      while (true) 
      { 
       try 
       { 
        message = auditSubscriptionClient.Receive(TimeSpan.FromSeconds(5)); 
        if (message != null) 
        { 
         Console.WriteLine("\nReceiving message from AuditSubscription..."); 
         Console.WriteLine(string.Format("Message received: Id = {0}, Body = {1}", message.MessageId, message.GetBody<string>())); 
         // Further custom message processing could go here... 
        } 
        else 
        { 
         Console.WriteLine("\nno more messages in the subscription"); 
         //no more messages in the subscription 
         break; 
        } 

       } 
       catch (MessagingException e) 
       { 
        if (!e.IsTransient) 
        { 
         Console.WriteLine(e.Message); 
         throw; 
        } 
       } 
      } 

      agentSubscriptionClient.Close(); 
      auditSubscriptionClient.Close(); 
     } 

Так может кто-нибудь сказать мне, как я называю этот описанным выше способом каждые 20 секунд?

ответ

1

Наиболее новичками решение:

Перетащите таймер из панели, дайте ему имя, установите желаемый интервал и установить «Enabled» в True. Затем дважды щелкните по таймеру и Visual Studio (или что вы используете) запишет вам следующий код:

private void wait_Tick(object sender, EventArgs e) 
{ 
    refreshText(); //add the method you want to call here. 
} 

или это

private Timer timer1; 
public void InitTimer() 
{ 
    timer1 = new Timer(); 
    timer1.Tick += new EventHandler(timer1_Tick); 
    timer1.Interval = 2000; // in miliseconds 
    timer1.Start(); 
} 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    isonline() 
} 
Смежные вопросы