4

30分ごとにバックグラウンドワーカーを開始したいタイマーティックがあります。タイマーティックの30分の同等の値は何ですか?

以下のコードは次のとおりです。

        _timer.Tick += new EventHandler(_timer_Tick);
        _timer.Interval = (1000) * (1);              
        _timer.Enabled = true;                       
        _timer.Start();       

    void _timer_Tick(object sender, EventArgs e)
    {
        _ticks++;
        if (_ticks == 15)
        {
            if (!backgroundWorker1.IsBusy)
            {
                backgroundWorker1.RunWorkerAsync();
            }

            _ticks = 0;
        }
    }

これが最善の方法なのか、誰かがより良い提案をしているのかはわかりません。

4

4 に答える 4

15

タイマーのIntervalプロパティは、ティックではなくミリ秒単位で指定されます。

したがって、30分ごとに起動するタイマーの場合は、次のようにします。

// 1000 is the number of milliseconds in a second.
// 60 is the number of seconds in a minute
// 30 is the number of minutes.
_timer.Interval = 1000 * 60 * 30;

Tickただし、使用しているイベントが何であるかはわかりません。経過したという意味だと思いますか?

編集CodeNakedが明らかにしているように、あなたはSystem.Timers.Timerではなく、System.Windows.Forms.Timerについて話しているのです。幸いなことに、私の答えは両方に当てはまります:)

最後に、メソッド_ticks内でカウント()を維持する理由がわかりません。timer_Tick次のように書き直す必要があります。

void _timer_Tick(object sender, EventArgs e)
{
    if (!backgroundWorker1.IsBusy)
    {
        backgroundWorker1.RunWorkerAsync();
    }
}
于 2012-04-04T12:39:40.740 に答える
4

コードを読みやすくするために、次のTimeSpanクラスを使用できます。

_timer.Interval = TimeSpan.FromMinutes(30).TotalMilliseconds;
于 2016-03-16T09:26:45.550 に答える
0

質問がうまくいきませんでした。ただし、30分の間隔が必要な場合は、timer1.interval=1800000を指定します。

//ミリ秒に10,000ティックがあります(これを忘れないでください)

于 2012-04-04T13:07:00.253 に答える
0
using Timer = System.Timers.Timer;

[STAThread]

static void Main(string[] args) {
    Timer t = new Timer(1800000); // 1 sec = 1000, 30 mins = 1800000 
    t.AutoReset = true;
    t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
    t.Start(); 
}

private static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
// do stuff every 30  minute
}
于 2016-10-24T02:31:51.727 に答える