C#同时使用WebClient和计时器以主动显示更新的数据

时间:2019-03-23 03:01:58

标签: c# html timer webclient

我有一个非常基础的网站,并且永远只包含一个整数。

但是整数会主动改变,我想添加到现有应用程序中以实时显示此整数。

-我尝试使用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 :(得分:0)

如果有人遇到类似的问题,我设法使用以下代码解决了问题:

    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