Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2017, 11:47   #1
sashf1999
Новичок
Джуниор
 
Регистрация: 25.06.2014
Сообщений: 1
По умолчанию Срабатывание таймера в потоке если равен false - C#

Всем привет!
Делаю программу и столкнулся с такой проблеммой

Код:
		bool otpravka_kajdoe_mm = true;


		void Parsing()
		{
			string Name_post = "",
			Kolvo_post = "",
			kol_vo = "",
			opovesh_esli_bolshe = "",
			otprav_sms = "";
			bool checkDanniPol = false;
			List nomer = System.IO.File.ReadAllLines("Nomer.txt").ToList();
			List sait = System.IO.File.ReadAllLines("Sait.txt").ToList();

			for (int i = 0; i < nomer.Count; i++) {
				var danni = new HttpRequest();
				string url = danni.Get(sait[i]).ToString();

				var parser = new HtmlParser();
				var document = parser.Parse(url);

				foreach (IElement element in document.QuerySelectorAll(@"tr[data-id='" + nomer[i] + "']>td>div[data-toggle='tooltip']")) {
					Name_post = element.TextContent.Trim();//Убираем лишнии пробелы
				}//Узнаем название

				foreach (IElement element in document.QuerySelectorAll(@"tr[data-id='" + nomer[i] + "']>td:nth-child(2)")) {
					Kolvo_post = element.TextContent;
				}//Узнаем кол-во

				this.Invoke((MethodInvoker)delegate() {
					Log_Text.AppendText(MyTime + "Информация была обновленна{" + i + "} раз." + n);

					Danni_polzovatelya[2, i].Value = "";
					Danni_polzovatelya[3, i].Value = "";
					Danni_polzovatelya[2, i].Value = Name_post.ToString();
					Danni_polzovatelya[3, i].Value = Kolvo_post.ToString();

					checkDanniPol = (bool)Danni_polzovatelya[4, i].EditedFormattedValue;//проверка чек бокса

					kol_vo = Danni_polzovatelya[3, i].Value.ToString();
					opovesh_esli_bolshe = Danni_Subject_Text.Text;
				});

				if (checkDanniPol) {//Проверка чекбокса есть ли там галочка
					if (otpravka_kajdoe_mm == true) {//Действие 1
						if (Convert.ToInt32(kol_vo) >= Convert.ToInt32(opovesh_esli_bolshe)) {
							this.Invoke((MethodInvoker)delegate() {
								Log_Text.AppendText(MyTime + "Были найденны по вашему требованию." + n);
								otprav_sms = Danni_OtpSms_Text.Text;
							});

							if (Danni_Telephone_1.Text.Count() > 4 || Danni_Telephone_2.Text.Count() > 4) {
								for (int j = 1; j < Convert.ToInt32(otprav_sms) + 1; j++) {
									Otpravka_Sms_telephones(Danni_Telephone_1.Text);
									//Otpravka_Sms_telephones(Danni_Telephone_2.Text);

									this.Invoke((MethodInvoker)delegate() {
										Log_Text.AppendText(MyTime + "На телефон(ы), было отправленно по " + j + n);
									});
								}
							}
						}

					}
					if (timer4.Enabled == false) {//Действие 2
						otpravka_kajdoe_mm = false;

						timer4.Interval = Convert.ToInt32(Danni_OpoveshVmm_Text.Text) * 60000;
						timer4.Tick += timer4_Tick;
						timer4.Enabled = true;

						this.Invoke((MethodInvoker)delegate() {
							richTextBox1.AppendText(MyTime + "таймер включился " + timer4.Enabled.ToString() + "\n");
						});
					}
				}
			}
		}
		//Функция парсинга

		private void timer4_Tick(object sender, EventArgs e)//Действие 3
		{
			otpravka_kajdoe_mm = true;
			timer4.Enabled = false;
		}
В чем проблемма, когда по умолчанию

otpravka_kajdoe_mm == true

первый раз данное действие срабатывает, после чего проходит цикл и включаеться таймер "timer4" и

otpravka_kajdoe_mm == false

и через 1 минуту должен выключиться и тем самым включить переменную "otpravka_kajdoe_mm" то бишь сделать ее типа true. Но в чем сама проблемс, после того как это сработало

timer4.Interval = Convert.ToInt32(Danni_OpoveshVmm_Te xt.Text) * 60000;
timer4.Tick += timer4_Tick;
timer4.Enabled = true;

и таймер включился, он не хочет выполнять это действие

otpravka_kajdoe_mm = true;
timer4.Enabled = false;

где от него требуеться подождать например 1 минуту(Convert.ToInt32(Danni_Opoves hVmm_Text.Text) * 60000).
Как мне сделать так что бы:
1. Таймер включился и через например 2 минуту переменная "otpravka_kajdoe_mm" стала типа true и в методе Parsing в "Действие 1" сработала
2. что бы таймер выключился.

Можете предложить свой вариант

_______________
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 18.09.2017 в 10:01.
sashf1999 вне форума Ответить с цитированием
Старый 17.09.2017, 22:16   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Оформите код нормально. А то не читабельно.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО]: Нужно сравнить value1 с value2, и если value1 > value2, то обновить value3, если false, то ничего не делать zaki SQL, базы данных 2 31.08.2015 20:46
Дана целочисленная матрица порядка 8, в которой элемент равен 0, если соответствующая клетка принадлежит какому-либо прямоугольник LM23 C# (си шарп) 5 13.03.2015 11:06
Составить программу, которая печатает true, если точка с координатами (х,у) принадлежит заштрихованной области, и false в противно package_herbs Паскаль, Turbo Pascal, PascalABC.NET 10 31.03.2013 22:52
если дата m,d,y предшествует дате m1,d1,y1, иначе t=false. с++ Lers Помощь студентам 12 13.12.2012 23:58
Сравнение строк, добавление если false Des Общие вопросы Delphi 6 20.08.2009 12:32