C# 每1秒重置一次计时器

C# 每1秒重置一次计时器,c#,winforms,timer,C#,Winforms,Timer,我试图每1秒重置一次计时器,以便它从webscript检索响应。但是我尝试过重置计时器,比如启动和停止功能,以及处理计时器和创建新的计时器。它只找到第一个响应,然后不再查询它 它的工作方式应该是: 当按下book on按钮>开始计时器>计时器点击0>查询web链接>将响应放入标签4(直到此处为止)>时间重置>查询web链接>将响应放入标签4。它将继续执行此操作,直到按下“书本关闭”按钮 代码: 代码中有一个基本问题:计时器自动运行其滴答事件,直到您告诉它停止。您告诉它在第一次滴答声后停止,并错误

我试图每1秒重置一次计时器,以便它从webscript检索响应。但是我尝试过重置计时器,比如启动和停止功能,以及处理计时器和创建新的计时器。它只找到第一个响应,然后不再查询它

它的工作方式应该是:

当按下book on按钮>开始计时器>计时器点击0>查询web链接>将响应放入标签4(直到此处为止)>时间重置>查询web链接>将响应放入标签4。它将继续执行此操作,直到按下“书本关闭”按钮

代码:


代码中有一个基本问题:计时器自动运行其滴答事件,直到您告诉它停止。您告诉它在第一次滴答声后停止,并错误地创建了一个新的滴答声。您可以完全删除此选项:

timer1.Dispose();
timer1 = new System.Windows.Forms.Timer();
此外,由于您使用的是
语句
,因此这也是毫无意义的:

request.GetResponse().Dispose();
而且,
HttpWebRequest
HttpWebResponse
基本上已被弃用,请改用
HttpClient

private void timer1_Tick(object sender, EventArgs e)
{
    using (var client = new HttpClient())
    { 
        string data = client.GetStringAsync("http://fms.psrpc.co.uk/apistate.php?" + ApiKey).GetAwaiter().GetResult();

        if (data == "State 1")
        {
            label4.Text = "On Duty";
            label4.ForeColor = Color.Gray;

        }
        else
        if (data  == "State 2")
        {
            label4.Text = "Available for calls";
            label4.ForeColor = Color.Green;

        }
        else
        if (data == "State 4")
        {
            label4.Text = "On Break";
            label4.ForeColor = Color.Yellow;

        }
        else
        if (data == "State 5")
        {
            label4.Text = "Responding to call";
            label4.ForeColor = Color.Orange;

        }
        else
        if (data == "State 6")
        {
            label4.Text = "On Scene";
            label4.ForeColor = Color.LightBlue;

        }
        else
        if (data == "State 7")
        {
            label4.Text = "Traffic Stop";
            label4.ForeColor = Color.Purple;

        }
        else
        if (data == "PANIC")
        {
            label4.Text = "PANIC BUTTON ACTIVATED";
            label4.ForeColor = Color.Red;

        }
        else
        if (data == "Assigned")
        {
            label4.Text = "Assigned to call";
            label4.ForeColor = Color.Brown;

        }
    }
}

您可能还需要仔细阅读
switch
语句,以删除所有
if
语句。

代码中存在一个基本问题:计时器自动运行其滴答事件,直到您告诉它停止。您告诉它在第一次滴答声后停止,并错误地创建了一个新的滴答声。您可以完全删除此选项:

timer1.Dispose();
timer1 = new System.Windows.Forms.Timer();
此外,由于您使用的是
语句
,因此这也是毫无意义的:

request.GetResponse().Dispose();
而且,
HttpWebRequest
HttpWebResponse
基本上已被弃用,请改用
HttpClient

private void timer1_Tick(object sender, EventArgs e)
{
    using (var client = new HttpClient())
    { 
        string data = client.GetStringAsync("http://fms.psrpc.co.uk/apistate.php?" + ApiKey).GetAwaiter().GetResult();

        if (data == "State 1")
        {
            label4.Text = "On Duty";
            label4.ForeColor = Color.Gray;

        }
        else
        if (data  == "State 2")
        {
            label4.Text = "Available for calls";
            label4.ForeColor = Color.Green;

        }
        else
        if (data == "State 4")
        {
            label4.Text = "On Break";
            label4.ForeColor = Color.Yellow;

        }
        else
        if (data == "State 5")
        {
            label4.Text = "Responding to call";
            label4.ForeColor = Color.Orange;

        }
        else
        if (data == "State 6")
        {
            label4.Text = "On Scene";
            label4.ForeColor = Color.LightBlue;

        }
        else
        if (data == "State 7")
        {
            label4.Text = "Traffic Stop";
            label4.ForeColor = Color.Purple;

        }
        else
        if (data == "PANIC")
        {
            label4.Text = "PANIC BUTTON ACTIVATED";
            label4.ForeColor = Color.Red;

        }
        else
        if (data == "Assigned")
        {
            label4.Text = "Assigned to call";
            label4.ForeColor = Color.Brown;

        }
    }
}

您可能还需要阅读
switch
语句,以删除所有
if
语句。

我不确定您实际上要解决的问题,您应该将
ReadToEnd
的第一个结果存储到一个变量中,您可能会发现,通过尝试每秒查询一个网站,您可能会受到限制。我不确定您实际上要解决的问题是什么,您应该将
ReadToEnd
的第一个结果存储到一个变量中,您可能会发现,通过尝试每秒查询一个网站,您可能会受到访问速率的限制。Httpclient是否打开web浏览器或是否保持浏览器关闭Httpclient是HttpWebRequest/Response的包装器。它不会打开任何浏览器所以我该如何使用Httpclient抱歉,我从未意识到它已经改变了Httpclient打开web浏览器还是保持浏览器关闭Httpclient是HttpWebRequest/Response的包装器。它不会打开任何浏览器所以我该如何使用HttpClient抱歉,我从未意识到它已经改变了