private async Task DoWorkAsync(int millisecondsDelay)
{
while (!_shouldStop)
{
await Task.Delay(millisecondsDelay).ConfigureAwait(false);
if (_shouldStop) break;
try
{
_logger.InfoFormat("Mobile Analytics Manager is trying to deliver events in background thread.");
IDictionary<string, MobileAnalyticsManager> instanceDictionary = MobileAnalyticsManager.CopyOfInstanceDictionary;
foreach (string appId in instanceDictionary.Keys)
{
MobileAnalyticsManager manager = null;
try
{
manager = MobileAnalyticsManager.GetInstance(appId);
await manager.BackgroundDeliveryClient.AttemptDeliveryAsync().ConfigureAwait(false);
}
catch (System.Exception e)
{
_logger.Error(e, "An exception occurred in Mobile Analytics Delivery Client : {0}", e.ToString());
if (null != manager)
{
MobileAnalyticsErrorEventArgs eventArgs = new MobileAnalyticsErrorEventArgs(this.GetType().Name, "An exception occurred when deliverying events to Amazon Mobile Analytics.", e, new List<Amazon.MobileAnalytics.Model.Event>());
manager.OnRaiseErrorEvent(eventArgs);
}
}
}
}
catch (System.Exception e)
{
_logger.Error(e, "An exception occurred in Mobile Analytics Manager : {0}", e.ToString());
}
}
}
}