Потоки и парсинг данных - 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);}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д