コード例 #1
0
        private void ScheduleHeartbeat(IHeartbeatScheduleItem heartbeatScheduleItem)
        {
            var timerCallback = new TimerCallback((state) => Task.Factory.StartNew(async() => await PublishHeartbeatMessageAsync(state as IHeartbeatScheduleItem).ConfigureAwait(false)));
            var timer         = new Timer(timerCallback, heartbeatScheduleItem, TimeSpan.Zero, TimeSpan.FromSeconds(heartbeatScheduleItem.IntervalInSeconds));

            HeartbeatTimers.Add(timer);
            ReferenceManager.AddObject(timer);
        }
コード例 #2
0
 private async Task PublishHeartbeatMessageAsync(IHeartbeatScheduleItem scheduleItem)
 {
     try
     {
         using (var dependencyScope = CreateDependencyScope())
         {
             var messagePublishingClient = dependencyScope.Resolve <IMessagePublishingClient>();
             await scheduleItem.PublishHeartbeatMessageAsync(messagePublishingClient).ConfigureAwait(false);
         }
     }
     catch (MessagePublishingException)
     {
         throw;
     }
     catch (Exception exception)
     {
         throw new MessagePublishingException(typeof(HeartbeatMessage), exception);
     }
 }