簡體   English   中英

每1秒重置一次計時器

[英]Making a Timer reset every 1 second

我試圖每1秒重置一次計時器,以便它從Web腳本中檢索響應。 但是我嘗試過的所有重置計時器的方法,例如啟動和停止功能,以及配置計時器和創建新計時器。 它只是找到第一個響應,然后不再查詢

它應該工作的方式是:

當按下按鈕上的書>開始計時器>計時器命中0>查詢Web鏈接>在標簽4中放置響應(直到這里完成)>時間重置>查詢Web鏈接>在標簽4中放置響應,它將繼續執行此操作直到按下“關閉書本”按鈕

碼:

private void timer1_Tick(object sender, EventArgs e)
    {

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://fms.psrpc.co.uk/apistate.php?" + ApiKey);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        using (response)
        {
            StreamReader reader = new StreamReader(response.GetResponseStream());
            if (reader.ReadToEnd() == "State 1")
            {
                label4.Text = "On Duty";
                label4.ForeColor = Color.Gray;

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

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

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

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

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

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

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

            }



        }
        request.GetResponse().Dispose();

        timer1.Dispose();
        timer1 = new System.Windows.Forms.Timer();
    }

代碼中存在一個基本問題:計時器會自動運行其tick事件,直到您告訴它停止為止。 您是在告訴它在第一個刻度之后停止並錯誤地創建了一個新刻度。 您可以將其完全刪除:

timer1.Dispose();
timer1 = new System.Windows.Forms.Timer();

另外,由於您正在使用using statements ,所以這也沒有意義:

request.GetResponse().Dispose();

並且,基本上不推薦使用HttpWebRequestHttpWebResponse ,而是使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM