5

私は、このタイマー クラス変更関数について msdn ライブラリを調べました。

http://msdn.microsoft.com/en-us/library/yz1c7148.aspx

public bool Change( int dueTime, int period )

しかし、私は期間パラメータが何であるかを理解していません。

また、サンプルを作成して目的を確認しようとしましたが、何もしていないようです

Timer JobTime = new Timer(timer =>
        {
            try
            {
                WriteLog(DateTime.Now.ToString(), "TestJobTimer"); //Save invoke time to file

                ((Timer)timer).Change(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(20));
            }
            catch(Exception ex)
            {
                string stop = ex.Message;
            }
        });
        JobTime.Change(0, 0);

このサンプルに基づいて、タイマーは5秒ごとに繰り返されるので、PERIODパラメータは何ですか?

ありがとうございました

4

2 に答える 2

6

dueTimeは、最初のイベントがいつ発生するかを示します。

その後の期間

あなたの場合、最初のイベントは5秒後に発生し、その後20秒ごとに発生します

編集

タイマーの変更を 0,0 で呼び出している限り、それはせっかちに開始し、タイマーの目盛り呼び出しで 20 秒ごとに 5 秒後に起動するように変更するため、イベントは 5 秒ごとに起動します。

5秒後に20秒ごとにイベントを発生させたい場合は、ハンドラーからタイマーの変更を削除し、このようにタイマーを1回だけ開始します

    Timer JobTime = new Timer(timer =>
    {
        try
        {
            Console.WriteLine(DateTime.Now.ToString(), "TestJobTimer"); //Save invoke time to file
        }
        catch (Exception ex)
        {
            string stop = ex.Message;
        }
    });
    JobTime.Change(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(20));

お役に立てれば

于 2012-05-07T11:38:25.347 に答える
0

DueTime = 最初の展開までの時間

期間 = 次の展開の期日後の時間、および後続の各展開の時間。

于 2012-05-07T11:37:54.283 に答える