private void syncLibraryWorker_DoWork(object sender, DoWorkEventArgs e)
{
LibrarySyncRunning = true;
SyncStartTime = DateTime.UtcNow;
Thread.CurrentThread.Name = "Sync";
if (TraktSettings.AccountStatus != ConnectionState.Connected)
return;
TraktLogger.Info("Started 2-way sync of all enabled plugins");
// get data from online and store in cache so its readily available for plugin sync
// data will also be used in user activity feed on the dashboard
if (!TraktCache.RefreshData())
return;
// user could change handlers during sync from Settings GUI so assign to a new list
var traktHandlers = new List<ITraktHandler>(TraktHandlers);
foreach (var traktHandler in traktHandlers)
{
if (syncLibraryWorker.CancellationPending)
return;
try
{
traktHandler.SyncLibrary();
}
catch (Exception ex)
{
TraktLogger.Error("Error synchronising library. Plugin = '{0}', Error = '{1}'", traktHandler.Name, ex.Message);
}
}
}