/// <summary>
 /// Handles the Elapsed event of the HeartbeatTimer control.
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="ElapsedEventArgs"/> instance containing the event data.</param>
 private void HeartbeatTimer_Elapsed(object sender, ElapsedEventArgs e)
 {
     SolarEdgeWCFService.TransmitHeartbeat();
     lock (ServiceLocker)
     {
         RestartHeartbeatTimer();
     }
 }
 /// <summary>
 /// Handles the SolarEdgeDataUpdated event of the DataFetcher.
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
 private void Instance_SolarEdgeDataUpdated(object sender, EventArgs e)
 {
     if (SolarEdgeServiceSettings.Default.ResetHeartbeatTimerOnDataUpdates)
     {
         lock (ServiceLocker)
         {
             RestartHeartbeatTimer();
         }
     }
     SolarEdgeWCFService.TransmitBaseUpdates();
     SolarEdgeWCFService.TransmitFullDataUpdates();
 }
 /// <summary>
 /// Handles the SolarEdgeDataIsValidChanged event of the DataFetcher.
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
 private void Instance_SolarEdgeDataIsValidChanged(object sender, EventArgs e)
 {
     SolarEdgeWCFService.TransmitDataIsValidUpdate(DataFetcher.Instance.SolarEdgeDataIsValid);
 }