public void ticks(object Params) { VKAPI vk = new VKAPI(Program.accessToken); string w; XmlDocument friendList; if ((((object[])(Params))[1].ToString() == "gr") | ((object[])(Params))[1].ToString() == "gr_mes") { friendList = vk.GetGroupMembers(this.textBoxGroupID.Text, this.textBox_offset.Text); w = "response/users/uid"; } else if (((object[])(Params))[1].ToString() == "ls_mes") { //TextReader txt = @"D:\Projects\TempApp\GroupAdmin\GroupAdmin\files\friendsAdd.txt"; friendList = new XmlDocument(); friendList.Load(directory + @"\files\friendsAdd.xml"); w = "response/uid"; } else if (((object[])(Params))[1].ToString() == "add_fr") { //TextReader txt = @"D:\Projects\TempApp\GroupAdmin\GroupAdmin\files\friendsAdd.txt"; friendList = new XmlDocument(); friendList = vk.GetRequests(); w = "response/uid"; } else { // я чет запутался что здесь должно быть, поэтому закоментил friendList = vk.GetAllFriends(); w = "response/items/user_id"; } foreach (XmlNode node in friendList.SelectNodes(w)) // "/users" { Thread.Sleep(300); cntr_users += 1; StreamWriter strmwrtr = new StreamWriter(directory + @"\files\usercntr.txt"); strmwrtr.Write(cntr_users.ToString()); strmwrtr.Close(); XmlDocument invite; if (((object[])(Params))[1].ToString() == "gr_mes" | ((object[])(Params))[1].ToString() == "ls_mes") { invite = vk.SendMessage(node.InnerText, this.textBoxGroupMess.Text, ""); } else if (((object[])(Params))[1].ToString() == "add_fr") { invite = vk.AddFriend(node.InnerText); invite = vk.SendMessage(node.InnerText, @"Привет. Ты добавился просто для количества? Могу помочь с накруткой друзей, реальных людей. Дешево и качестванно) Либо могу присылать тебе время от времени людей чтобы ты сам добавлял их в друзья. Бесплатно)", ""); } else { invite = vk.InviteUserToGroup(Convert.ToInt32(this.textBoxEventID.Text), Convert.ToInt32(node.InnerText)); } StreamWriter strmwrtrlog = new StreamWriter(directory + @"\files\log.txt", true); if (invite.SelectNodes("/error/error_code").Count != 0) { strmwrtrlog.WriteLine(cntr_users.ToString() + " " + node.InnerText + " " + invite.SelectSingleNode("/error/error_code").InnerText.ToString()); //+ node1.InnerText } else { strmwrtrlog.WriteLine(cntr_users.ToString() + " " + node.InnerText + " OK"); //+ node1.InnerText } strmwrtrlog.Close(); foreach (XmlNode node1 in invite.SelectNodes("/error/error_code")) { if (node1.InnerText == "14") { object[] Params1 = { Params, invite.SelectSingleNode("/error/captcha_img").InnerText.ToString() }; var form = ((FormCapcha)((object[])((Params1)[0]))[0]); form.Tag = "stop"; //Если возникает данная ошибка, то в сообщении об ошибке передаются также следующие параметры: //captcha_sid - идентификатор captcha //captcha_img - ссылка на изображение, которое нужно показать пользователю, чтобы он ввел текст с этого изображения. //В этом случае следует запросить пользователя ввести текст с изображения captcha_img и повторить запрос, добавив в него параметры: //captcha_sid - полученный идентификатор //captcha_key - текст, который ввел пользователь while (form.Tag.ToString() == "stop") //ждем пока пользователь не нажмет кнопку { form.Invoke(new Action(() => { form.Show(); form.label1.Text = ((object[])(Params1))[1].ToString(); //передаем в форму переменную })); } //MessageBox.Show(form.Tag.ToString()); // получаем введенное значение //invite.SelectSingleNode("/error/captcha_sid").InnerText.ToString(); if (((object[])(Params))[1].ToString() == "gr_mes" | ((object[])(Params))[1].ToString() == "ls_mes") { XmlDocument inviteCapcha = vk.SendMessage(node.InnerText, this.textBoxGroupMess.Text, "", invite.SelectSingleNode("/error/captcha_sid").InnerText.ToString(), form.Tag.ToString()); } else { XmlDocument inviteCapcha = vk.InviteUserToGroup(Convert.ToInt32(this.textBoxEventID.Text), Convert.ToInt32(node.InnerText), invite.SelectSingleNode("/error/captcha_sid").InnerText.ToString(), form.Tag.ToString()); } } } } MessageBox.Show("Ready"); // это то, что выполняется в цикле }