Потоки и парсинг данных - C#
Формулировка задачи:
Не знаю как правильно описать,но попробую своими словами.
Вообщем в потоке через Json парсим twitch и если есть поле
display_name
,выдает в BalloonTipText сообщение о том,что пользователь начал трансляцию. Поток работает до тех пор,пока не найдетdisplay_name
и не выдаст сообщение в подсказку. Дальше надо парсить эту же страницу и ждать пока появиться полеstream\":null
,после чего вернуться к начальному действию с парсингомdisplay_name
. По простому: 1.Спарсить твич 1.Найти полеdisplay_name
2.Выдать инфу в BalloonTipText 3.Ожидать пока не найдется поле B]stream\":null[/B] 4.Вернутся к 1 пункту.public partial class SettingsForm : Form { Thread twitchStreamThread; string Username = "testProfile"; public SettingsForm() { InitializeComponent(); //Set up the icon image twitchIcon = new Icon("notice.ico"); //Оповещение и иконка twitchTray = new NotifyIcon(); twitchTray.Icon = twitchIcon; twitchTray.Visible = true; //Сворачиваем форму и прячем в панели задач this.WindowState = FormWindowState.Minimized; this.ShowInTaskbar = false; // Запуск потока twitchStreamThread = new Thread(new ThreadStart(TwitchStreamLiveThread)); twitchStreamThread.Start(); } private void notice_ClickLinked(Object sender, EventArgs e) { System.Diagnostics.Process.Start("http://www.twitch.tv/testProfile"); } private void TwitchStreamLiveThread() { try { while (true) { string sUrl = "https://api.twitch.tv/kraken/streams/" + Username; HttpWebRequest wRequest = (HttpWebRequest)HttpWebRequest.Create(sUrl); wRequest.ContentType = "application/json"; wRequest.Accept = "application/vnd.twitchtv.v3+json"; wRequest.Method = "GET"; dynamic wResponse = wRequest.GetResponse().GetResponseStream(); StreamReader reader = new StreamReader(wResponse); dynamic res = reader.ReadToEnd(); reader.Close(); wResponse.Close(); if (res.Contains("display_name")) { twitchTray.BalloonTipTitle = Username + " начал(а) трансляцию!"; twitchTray.BalloonTipText = "(Нажмите для просмотра трансляции)"; twitchTray.ShowBalloonTip(10000); twitchTray.BalloonTipClicked += notice_ClickLinked; } Thread.Sleep(5000); } } catch (ThreadAbortException tbe) { } // Что дальше делать? } }
нашел временное решение,созданием ещё одного потока с поиском второй строки и по очередной паузы потоков...
но это не то,что я хотел.Сделал конечно,но через одно место...
Решение задачи: «Потоки и парсинг данных»
textual
Листинг программы
while (true) {Thread.Sleep(5000);}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д