Exemplo n.º 1
0
 private void StopButton_Click(object sender, EventArgs e)
 {
     if (UserProcesser.IsBusy)
     {
         UserProcesser.CancelAsync();
     }
 }
Exemplo n.º 2
0
 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();
 }
Exemplo n.º 3
0
        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
                }
            }
        }