private void DoWork()
{
while (!_shouldStop)
{
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);
manager.BackgroundDeliveryClient.AttemptDelivery();
}
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);
}
}
}
Thread.Sleep(BackgroundSubmissionWaitTime * 1000);
}
catch (System.Exception e)
{
_logger.Error(e, "An exception occurred in Mobile Analytics Manager.");
}
UnityRequestQueue.Instance.ExecuteOnMainThread(() =>
{
if (Application.isEditor && !Application.isPlaying)
{
AbortBackgroundThread();
}
});
}
}
}