2012-01-09 5 views
0

私は2つのタイマーを持っています。それらのうちの1つは、それがダンプするたびにカウントされます。定常的な間隔またはランダムに生成されたものを使用しています。第2のタイマーは、第1のタイマーの次のティックまでカウントダウンする。今、私のようなやっているのようタイマーの次のチックまでの時間をカウントダウンする方法は?

:私は10で、問題を分割する最初のタイマーの間隔を使用することにより、タイマーダウン私のカウントの間隔を設定しています

private void btnStart_Click(object sender, EventArgs e) 
    { 
     nextClick = int.Parse(nudClickInterval.Value.ToString()); 

     if (nudPlusMinus.Value != 0) tmrClickInterval.Interval = random.Next(int.Parse(nudClickInterval.Value.ToString()) - int.Parse(nudPlusMinus.Value.ToString()), int.Parse(nudClickInterval.Value.ToString()) + int.Parse(nudPlusMinus.Value.ToString())); 
     else tmrClickInterval.Interval = int.Parse(nudClickInterval.Value.ToString()); 

     tmrClickInterval.Start(); 
    } 

    private void tmrClickInterval_Tick(object sender, EventArgs e) 
    { 
     if (nudPlusMinus.Value == 0) tmrClickInterval.Interval = int.Parse(nudClickInterval.Value.ToString()); 
     else tmrClickInterval.Interval = random.Next(int.Parse(nudClickInterval.Value.ToString()) - int.Parse(nudPlusMinus.Value.ToString()), int.Parse(nudClickInterval.Value.ToString()) + int.Parse(nudPlusMinus.Value.ToString())); 

     tmrNextClick.Interval = tmrClickInterval.Interval/10; 
     tmrNextClick.Start(); 
     content++; 
     nextClick = tmrClickInterval.Interval; 
     label1.Text = content.ToString(); 
    } 

    private void tmrNextClick_Tick(object sender, EventArgs e) 
    { 
     if (nextClick <= 0) tmrNextClick.Stop(); 
     else 
     { 
      nextClick = nextClick - (tmrClickInterval.Interval/10); 
      lblNextClickCount.Text = (nextClick/100).ToString(); 
     } 
    } 

は、私はいくつかのエラーを取得しておくことです例えば:Value '0' is not a valid value for Interval. Interval must be greater than 0. at line:tmrNextClick.Interval = tmrClickInterval.Interval/10;

私はエラーを避ける方法がわかりませんので、次のタイマーティックまで時間をカウントする良い方法があるかもしれないと思います。プラス、私は代わりに良い安定した間隔でカウントダウンしたいと思いますが、私はかなり混乱し、この問題を管理する方法がわかりません。

何か助けてください。

答えて

2

System.Windows.Forms.Timerは、intインターバルを有する。 10よりもsamllerの数値を10で割ると、0(整数除算!)になります。

の間隔を持つか、その場合は0をチェックして1を割り当てます。System.Timers.Timerを使用してください。

+0

タイマーの間隔の倍数バージョンを試してみていただきありがとうございます。役に立つかもしれない。 – HelpNeeder

+0

BTW。簡単な質問です最小許容タイマーインターバルは何ですか? – HelpNeeder

+1

with System.Windows.Forms.Timerその1、System.Timers.Timerのこの男は1/64秒と言っているhttp://www.eggheadcafe.com/community/ask-dr-dotnetsky/12/61662/c- -timer-interval-below-164-sec-.aspx – Peter

関連する問題