Beispiel #1
0
 private void PostingTask()
 {
     try
     {
         DateTime lastMessage = DateTime.Now;
         while (!Finished)
         {
             var message = GetNextMessageToPost();
             if (message != null)
             {
                 PostMessage(message);
                 lastMessage = DateTime.Now;
             }
             else
             {
                 if (_client != null)                                           //If the queue runs dry we close the connection
                 {
                     if ((DateTime.Now - lastMessage).TotalMilliseconds > 5000) //TODO: parametrize.
                     {
                         log.Debug("Disposing client because of empty queue.");
                         _client.Dispose();
                         _client = null;
                     }
                     else
                     {
                         Thread.Sleep(100);
                     }
                 }
                 if (StopRequested)
                 {
                     Finished = true;
                 }
                 else
                 {
                     lock (monitor)
                     {
                         if (Finished)
                         {
                             break;
                         }
                         if (StopRequested)
                         {
                             Finished = true;
                             break;
                         }
                         Monitor.Wait(monitor, 100);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         log.Error("Exception in the posting thread.", ex);
     }
 }
Beispiel #2
0
 private void PostingTask()
 {
     try
     {
         while (!Finished)
         {
             var message = GetNextMessageToPost();
             if (message != null)
             {
                 PostMessage(message);
             }
             else
             {
                 if (_client != null)         //If the queue runs dry we close the connection
                 {
                     log.Debug("Disposing client because of empty queue.");
                     _client.Dispose();
                     _client = null;
                 }
                 if (StopRequested)
                 {
                     Finished = true;
                 }
                 else
                 {
                     lock (monitor)
                     {
                         if (Finished)
                         {
                             break;
                         }
                         if (StopRequested)
                         {
                             Finished = true;
                             break;
                         }
                         Monitor.Wait(monitor, 100);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         log.Error("Exception in the posting thread.", ex);
     }
 }
Beispiel #3
0
 private void PostingTask()
 {
     try
     {
         DateTime lastMessage = DateTime.Now;
         while (!Finished)
         {
             var message = GetNextMessageToPost();
             if (message != null)
             {
                 log.DebugFormat("Posting message [{0}]", message.Subject);
                 PostMessage(message);
                 lastMessage = DateTime.Now;
             }
             else
             {
                 log.DebugFormat("No message to post, checking cleanup.");
                 if (_client != null)         //If the queue runs dry we close the connection
                 {
                     //log.DebugFormat("The posting client is not null.");
                     if ((DateTime.Now - lastMessage).TotalMilliseconds > 5000) //TODO: parametrize.
                     {
                         log.Debug("Disposing client because of empty queue.");
                         _client.Dispose();
                         _client = null;
                     }
                     else
                     {
                         //log.DebugFormat("Sleeping 100ms before next loop.");
                         Thread.Sleep(100);
                     }
                 }
                 if (StopRequested)
                 {
                     //log.Debug("Empty queue and stop requested, Finished = true.");
                     Finished = true;
                 }
                 else
                 {
                     //log.Debug("Locking monitor.");
                     lock (monitor)
                     {
                         //log.Debug("Locked monitor.");
                         if (Finished)
                         {
                             //.Debug("Finished = true breaking out of loop.");
                             break;
                         }
                         if (StopRequested)
                         {
                             //log.Debug("Empty queue and stop requested, Finished = true.");
                             Finished = true;
                             break;
                         }
                         //log.Debug("waiting 100 ms on monitor.");
                         Monitor.Wait(monitor, 100);     //TODO: BLB Possible cause of locking issue by UNI.
                     }
                     //log.Debug("Unlocked monitor.");
                 }
             }
             log.DebugFormat("Finished cleanup.");
         }
     }
     catch (Exception ex)
     {
         log.Error("Exception in the posting thread.", ex);
     }
     log.Debug("Finished posting task, exiting thread.");
 }