2017-04-11 16 views
1

私は毎日午前8時にvibe.dウェブアプリケーションでタスクを実行しようとしています。 現時点ではのパラメータをtrueに設定してsetTimer関数を使用しています。しかし、この方法では、タスクがトリガーされる時間を正確に制御することはできません。バイブでこれを行う簡単な方法はありますか?毎日午前8時に振動してタスクを実行する方法はありますか?

+2

次の午前8時までの時間を計算し、適切な期間で 'setTimer'を呼び出すことを妨げるものはありません。 – sigod

答えて

2

ありがとうございました。それはまさに私がやったことです。私は次の午前8時までの時間を計算し、setTimerを呼び出します。

void startDailyTaskAtTime(TimeOfDay time, void delegate() task) { 
    // Get the current date and time 
    DateTime now = cast(DateTime)Clock.currTime(); 

    // Get the next time occurrence 
    DateTime nextOcc = cast(DateTime)now; 
    if (now.timeOfDay >= time) { 
    nextOcc += dur!"days"(1); 
    } 
    nextOcc.timeOfDay = time; 

    // Get the duration before now and the next occurrence 
    Duration timeBeforeNextOcc = nextOcc - now; 

    void setDailyTask() { 
    // Run the task once 
    task(); 
    // Run the task all subsequent days at the same time 
    setTimer(1.days, task, true); 
    } 

    setTimer(timeBeforeNextOcc, &setDailyTask); 
} 
関連する問題