private void StartSync() { SetSyncControlProperties(true); var syncThread = new Thread(() => { if (TraktSettings.AccountStatus != ConnectionState.Connected) { // stop sync SetSyncControlProperties(false); TraktSettings.AccountStatus = ConnectionState.Pending; return; } TraktLogger.Info("Library and Playback Sync started for 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; } foreach (var item in clbPlugins.CheckedItems) { try { switch (item.ToString()) { case "Moving Pictures": var movingPictures = new MovingPictures(TraktSettings.MovingPictures); movingPictures.SyncLibrary(); movingPictures.SyncProgress(); break; case "MP-TVSeries": var tvSeries = new TVSeries(TraktSettings.TVSeries); tvSeries.SyncLibrary(); tvSeries.SyncProgress(); break; case "My Videos": var myVideos = new MyVideos(TraktSettings.MyVideos); myVideos.SyncLibrary(); myVideos.SyncProgress(); break; case "My Films": var myFilms = new MyFilmsHandler(TraktSettings.MyFilms); myFilms.SyncLibrary(); myFilms.SyncProgress(); break; } } catch (Exception ex) { TraktLogger.Error("Error synchronising library, Plugin = '{0}', Error = '{1}'", item.ToString(), ex.Message); continue; } } // save user activity cache TraktCache.Save(); TraktLogger.Info("Library and Playback Sync completed for all enabled plugins"); SetSyncControlProperties(false); if (SilentMode || AutoCloseAfterSync) { CloseConfig(); } }) { Name = "Sync", IsBackground = true }; syncThread.Start(); }