private void StopButton_Click(object sender, EventArgs e) { if (UserProcesser.IsBusy) { UserProcesser.CancelAsync(); } }
private void Button1Click(object sender, EventArgs e) { if (!Vk.IsAuthorized) { MessageBox.Show(@"Вы не авторизовались", @"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } userListView.Items.Clear(); startButton.Enabled = false; StopButton.Enabled = true; UserProcesser.RunWorkerAsync(); }
private void UserProcesserDoWork(object sender, DoWorkEventArgs e) { var profileInfo = Vk.Account.GetProfileInfo(); var groups = GetSelfGroups(); if (selfName.InvokeRequired) { selfName.Invoke((Action)(() => selfName.Text = $@"Ваше имя: {profileInfo.FirstName} {profileInfo.LastName}")); } if (selfGroups.InvokeRequired) { selfGroups.Invoke((Action)(() => selfGroups.Text = $@"Количество групп: {groups.Count}")); } var utils = Vk.Utils; var searchGroup = ResolveGroup(utils); var min = (ushort)minAge.Value; var max = (ushort)maxAge.Value; var i = 0; int matches = Convert.ToInt16(minIntGroups.Value); var sex = sexMale.Checked ? Sex.Male : Sex.Female; if (searchGroup == null) { MessageBox.Show(@"Группа не найдена", @"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var users = UsersSearch(searchGroup, min, max, cityBox.Text, sex); if (usersCount.InvokeRequired) { usersCount.Invoke((Action)(() => usersCount.Text = $@"Найдено: {users.Count}")); } if (userCheckingProgress.InvokeRequired) { userCheckingProgress.Invoke((Action)(() => userCheckingProgress.Maximum = users.Count)); } foreach (var user in users) { try { if (UserProcesser.CancellationPending) { e.Cancel = true; return; } var userGroups = Vk.Groups.Get(new GroupsGetParams { Count = 1000, UserId = user.Id }).ToList(); var userFirstName = user.FirstName; var userLastName = user.LastName; var photoLink = user.Photo100.AbsoluteUri; var userLink = "https://vk.com/id" + user.Id; var both = userGroups.Intersect(groups, new GroupComparer()).ToList(); var intersections = both.Count; if (intersections >= matches) { string[] userInfo = { $"{userFirstName} {userLastName}", userLink, photoLink }; var listViewItem = new ListViewItem(userInfo); if (userListView.InvokeRequired) { userListView.Invoke((Action)(() => userListView.Items.Add(listViewItem))); } } i += 1; UserProcesser.ReportProgress(i); } catch { // ignored } } }