0

私はタイマーを使用しています -

static int count = 0;

private void button1_Click(object sender, EventArgs e)
    {
        // set time
        timer1.Interval = System.Convert.ToInt32(textBox2.Text) * 1000;
        // start timer
        timer1.Enabled = true;

        // set iterations
        count = System.Convert.ToInt32(textBox3.Text);

    }

ダニの場所 -

private void timer1_Tick_1(object sender, EventArgs e)
    {
        count--;
        if (count == 0)
        {
            timer1.Enabled = false;

        }
        listBox1.Items.Add(textBox1.Text + " : " + count.ToString());

        var status = textBox1.Text + " : " + count.ToString();
        }

1秒ごとに刻む時間を設定し、カウントを4に設定すると、これによりイベントが毎秒実行され、4回繰り返されると推測されました。ただし、イベントを 3 回繰り返すと、クラッシュします。リスト ボックスは次のように更新されます -

test : 3
test : 2
test : 1

エラーは -

The operation has timed out

これは、タイマー ティック内に Web リクエストを作成していることが原因である可能性があると思います - `

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(resource_url);
        request.Headers.Add("Authorization", authHeader);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        using (Stream stream = request.GetRequestStream())
        {
            byte[] content = ASCIIEncoding.ASCII.GetBytes(postBody);
            stream.Write(content, 0, content.Length);
        }
        WebResponse response = request.GetResponse();`

どうすればこの問題を回避できますか? さらに読むと、URL に対して 2 つ以上の呼び出しを行うと、このエラーが発生することが示されています。

4

2 に答える 2

0

timer1.Stop()代わりに試してくださいtimer1.Enabled = false;

if (count == 0)
{
   timer1.Stop();
}
于 2012-05-29T11:37:32.540 に答える