/// <summary> /// Загрузка альбомов рабочей группы /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CmdFileLoadAlbums_OnClick(object sender, RoutedEventArgs e) { if (m_settings.ExpirationDate.CompareTo(DateTime.Now) < 0) { var af = new AuthForm(3550451); if (af.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } m_settings.AccessToken = af.GetAccessToken(); m_settings.LoggedUserId = af.GetTokenUserId(); m_settings.SetExpiration(Int32.Parse(af.GetExiprationValue())); } var bg = new BackgroundWorker {WorkerReportsProgress = true}; bg.ProgressChanged += (o, args) => { if (m_waitingWindow != null) m_waitingWindow.SetState(args.UserState.ToString()); }; bg.DoWork += AlbumsUpdateThreadProc; bg.RunWorkerCompleted += (o, args) => { if (m_waitingWindow != null) { m_waitingWindow.Close(); m_waitingWindow = null; } if (args.Error != null) { this.ShowError(args.Error.Message); } lock (m_workersPool) { m_workersPool.Remove((BackgroundWorker)o); } // обновить список альбомов на форме FillAlbumsListAsync(); }; lock (m_workersPool) { m_workersPool.Add(bg); } bg.RunWorkerAsync(); m_waitingWindow = new WaitingWindow(this); m_waitingWindow.ShowDialog(); }
private void cmdAlbumLoadData_OnClick(object sender, RoutedEventArgs e) { if (SelectedAlbum == null) { this.ShowError("Для выполнения этой операции необходимо выбрать хотябы один альбом из списка."); return; } if (!this.ShowQuestion(String.Format("Обновить информацию по альбому '{0}'?", SelectedAlbum.GetCleanTitle()))) return; if (m_settings.ExpirationDate.CompareTo(DateTime.Now) < 0) { var af = new AuthForm(3550451); if (af.ShowDialog() != System.Windows.Forms.DialogResult.OK) { this.ShowError("Для работы нужно авторизоваться в сети!"); return; } m_settings.AccessToken = af.GetAccessToken(); m_settings.LoggedUserId = af.GetTokenUserId(); m_settings.SetExpiration(Int32.Parse(af.GetExiprationValue())); } var bg = new BackgroundWorker { WorkerReportsProgress = true }; bg.DoWork += UpdatePhotosInAlbumThreadProc; bg.ProgressChanged += (o, args) => { if (m_waitingWindow != null) { m_waitingWindow.SetState(args.UserState.ToString()); } }; bg.RunWorkerCompleted += (o, args) => { var worker = sender as BackgroundWorker; if (worker != null) { lock (m_workersPool) { m_workersPool.Remove(worker); } } if (m_waitingWindow != null) { m_waitingWindow.Close(); m_waitingWindow = null; } if (args.Error != null) { this.ShowError(args.Error.Message); return; } if (m_selectedView == ServiceTreeNodes.AlbumPaymets) { ShowAlbumPaymentsDetails(SelectedAlbum); } else if (m_selectedView == ServiceTreeNodes.AlbumProducts) { ShowAlbumProductsDetails(SelectedAlbum); } else if (m_selectedView == ServiceTreeNodes.AlbumCustomers) { ShowAlbumCutomersDetails(SelectedAlbum); } }; lock (m_workersPool) { m_workersPool.Add(bg); } bg.RunWorkerAsync(SelectedAlbum); m_waitingWindow =new WaitingWindow(this); m_waitingWindow.ShowDialog(); }