C # Использование WebClient и таймера вместе для активного отображения обновленных данных - PullRequest
0 голосов
/ 23 марта 2019

У меня есть чрезвычайно простой сайт, который будет состоять только из одного целого числа.

Однако целое число будет активно меняться, я хочу добавить в свое существующее приложение, чтобы отобразить, что это целое число в режиме реального времени.

-Я пробовал использовать Timer и WebClient, однако, если я помещу код в InitializeComponent (), форма никогда не загрузится.

-Также я помещу код в Form1_Load, форма никогда не загрузится.

- Мне удалось получить число для отображения в режиме реального времени, поместив код в событие button_click, но я хочу, чтобы этот код начинался сразу после загрузки формы.

-Также при первом нажатии кнопки в первой последовательности таймера на метке будет отображаться lat (не знаю, что это значит)

-После того, как кнопка была нажата и цикл таймера начал разрывать приложение, номер будет обновляться должным образом, но вы не можете использовать другие функции приложения, вы не можете перемещать окно, вы не можете закрыть приложение и т. Д. .

    private void timer_Tick(object sender, EventArgs e)
    {
        Timer timer = (Timer)sender;
        this.Visible = false;
        timer.Stop();
        this.Visible = true;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        int c = 5;
        while (c == 5)
        {
            using (var client = new WebClient())
            {
                var s = client.DownloadString(@"myURL.html");
                var htmldoc2 = (IHTMLDocument2)new HTMLDocument();
                htmldoc2.write(s);
                var plainText = htmldoc2.body.outerText;
                label1.Text = plainText;
                System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
                timer.Interval = 5000;
                timer.Tick += new EventHandler(timer_Tick);
                timer.Start();
            }
        }
      }

Пожалуйста, помогите мне без понятия, что я здесь делаю неправильно

1 Ответ

0 голосов
/ 23 марта 2019

Мне удалось исправить мою проблему, используя следующий код, если у кого-либо возникли подобные вопросы:

    private void test()
    {
        using (var client = new WebClient())
        {
            var s = client.DownloadString(@"myURL.html");
            var htmldoc2 = (IHTMLDocument2)new HTMLDocument();
            htmldoc2.write(s);
            var plainText = htmldoc2.body.outerText;
            label1.Text = plainText;
        }
    }
    int i = 1;
    private void timer1_Tick(object sender, EventArgs e)
    {
        i += 1;
        if (i >= 199)
        {
            i = 1;
            timer1.Stop();
            timer1.Start();
        }
        test();
    }

timer1 был добавлен в winform из панели инструментов и установлен включенным с интервалом 200

...