Потоки и парсинг данных - 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);}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5
Похожие ответы