/// <summary> /// Принимаем все сообщения от группы /// </summary> public void GetMsgFromFroup() { CORE.AutoExit _autoExit = CORE.AutoExit.GetInstance(); //синглтончик _controlForm.SetLabelStateProgramm("Сервер включен"); new Thread(() => _readerAllEvents.readMsgFromGroup()).Start(); //в этом потоке нонстоп читаем данные с сервера new Thread(() => //в этом потоке ждём, получаем и формируем блок сообщений, отправляем сортировщику { while (true) { Thread.Sleep(7000); if (userMessage != "" && userID != 0) { _userMessage = userMessage; _userID = userID; _controlForm.AddMsgRichTextBox(_userID.ToString(), _userMessage); userMessage = ""; userID = 0; SortMsgFromGroup(_userMessage); // _sendMsgFromGroup.SendMessage(_userMessage, _userID); // !!! тут сортировщик вставить _userMessage = ""; _userID = 0; } if (FORM.MainForm.stopRun == true) { Debug.WriteLine("Stop Sender"); break; } } }).Start(); }
public void readMsgFromGroup() { var s = _GetAuth.api.Groups.GetLongPollServer(75514519); //обновлять в экзепшн SrvLongPoll = s.Server; _ts = s.Ts; while (true) // Бесконечный цикл, получение обновлений { try { s = _GetAuth.api.Groups.GetLongPollServer(75514519); //обновлять в экзепшн SrvLongPoll = s.Server; var poll = _GetAuth.api.Groups.GetBotsLongPollHistory( new BotsLongPollHistoryParams { Server = SrvLongPoll, Ts = _ts, Key = s.Key, Wait = 10 }); _ts = poll.Ts; // <-- нужно обновлять Ts if (FORM.MainForm.stopRun == true) //стоп если есть флаг { Debug.WriteLine("Stop Reader"); _controlForm.SetLabelStateProgramm("Сервер выключен"); break; } if (poll.Updates != null) { foreach (var a in poll.Updates) { if (a.Type == GroupUpdateType.MessageNew) { CORE.Receiver.userMessage += "%start%&begin[" + a.Message.PeerId + "]" + a.Message.Text + "&end%final%" + Environment.NewLine; CORE.Receiver.userID = a.Message.PeerId; // Debug.WriteLine($"[{CORE.Receiver.userID}] {CORE.Receiver.userMessage}"); } else //тут если нет новый сообщений { } } } } catch (Exception ex) { //s = _GetAuth.api.Groups.GetLongPollServer(75514519); //обновлять в экзепшн //SrvLongPoll = s.Server; //_ts = s.Ts; } } }
private void button2_Click(object sender, EventArgs e) { stopRun = true; CORE.AutoExit.TimerStop(); _controlForm.SetLabelStateProgramm("Завершаем потоки.."); }