0

WindowsフォームC3アプリケーションでタイマーを停止するのを手伝ってくれる人はいますか? デザイナーを使用してフォームにタイマーを追加し、間隔を 1000 に設定しました。ボタンをクリックしてから5秒待ってから、いくつかのアクションを実行したいと思います。コードを確認して、私にアドバイスしてください。問題は、MessageBox2 を無限に取得し、タイマーが停止しないことです。

static int count;

public Form1()
        {
            InitializeComponent(); 
            timer1.Tick += timer1_Tick;
        }
public void button1_Click(object sender, EventArgs e)
        {

        timer1.Enabled = true;

        while(count>5)
         {
          ....dosome actions...
         }

        }
private void timer1_Tick(object sender, EventArgs e)
        {
            count1++;
           MessageBox.Show("Messagebox2");
           if (count1 == 5)
           {
               //timer1.Enabled = false; timer1.Stop(); 
               ((System.Timers.Timer)sender).Enabled = false;
               MessageBox.Show("stopping timer");
           }
        }
4

3 に答える 3

2

私はcount役に立たないものにし、プロパティを使用して、イベントtimer 1 intervalにアクションを入れます。timer1_Tick

  public void button1_Click(object sender, EventArgs e)
    {
          timer1.Interval = 5000;
          timer1.Enabled = true;
    }

   private void timer1_Tick(object sender, EventArgs e)
   {
        timer1.Enabled = false;  
        MessageBox.Show("stopping timer");
        // Your other actions here
   }
于 2012-06-09T13:18:39.970 に答える
0

インクリメントcount1してチェックしていcountます。

while(count1 > 5)
{
    ...dosome actions...
}
于 2012-06-09T13:19:14.910 に答える
0

どのタイマーを使用していますか? C# は 2 つの異なる名前空間のクラス Timer をサポートしているためです。1 つは Forms からのもので、もう 1 つは System.Timers からのものです。もう 1 つの System.Timers.Timer を使用することをお勧めします。

                Timer t = new Timer(20000); // created with 20seconds
            t.Enabled = true; // enables firing Elapsed event
            t.Elapsed += (s, e) => {
                \\do stuff
            };

            t.Start();

この短いコードでは、タイマーを作成して有効にする方法を確認できます。Elapsed イベントに登録することで、時間が経過した後に何をすべきかを明示的に指定します。これは一度だけ行われます。もちろん、制限に達する前にユーザーがボタンをクリックした場合に備えて、いくつかの変更が必要です。ただし、これは、要求するアクションの動作に大きく依存します。

于 2012-06-09T13:51:32.870 に答える