как услугата да работи в точно определено време?

Имам услуга, която в момента вярвам, че работи на всеки 10 минути, но искам да работи в 19:00 всеки ден, какво трябва да променя? ....

 private Timer _timer;
    private DateTime _lastRun = DateTime.Now;

    protected override void OnStart(string[] args)
    {
        _timer = new Timer(10 * 60 * 1000); // every 10 minutes??
        _timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
    }

    private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {

        if (_lastRun.Date < DateTime.Now.Date)
        {
            // stop the timer 
            _timer.Stop();               

            try
            {
                SmartImportService.WebService.WebServiceSoapClient test = new WebService.WebServiceSoapClient();
                test.Import();
            }
            catch (Exception ex) { }

            _lastRun = DateTime.Now;
            _timer.Start();
        }
    }

person Beginner    schedule 17.04.2012    source източник
comment
Защо изобщо използвате услуга за това? Настройте го като планирана задача.   -  person M.Babcock    schedule 17.04.2012
comment
Така че взехте приетия отговор в stackoverflow.com/questions/503564/ и го поставих в нов въпрос, вместо да гледам отговора с най-много положителни гласове точно под него .   -  person Till    schedule 17.04.2012


Отговори (2)


Замяна:

if (_lastRun.Date < DateTime.Now.Date)
{
}

с:

DateTime startAt = DateTime.Today.AddHours(19);
if (_lastRun < startAt && DateTime.Now >= startAt)
{
}

вероятно ще свърши работа. Но бих предпочел да използвам планирана задача, както вече беше предложено

person musefan    schedule 17.04.2012
comment
това прави ли някога 7 часа? не всяка вечер в 19 часа? - person Beginner; 17.04.2012
comment
@Начинаещ: Всъщност го правеше в 7 сутринта всеки ден, но сега го промених. Имайте предвид, че DateTime.Today получава текущата дата на 0 часа, след което добавяме 19 часа, за да стане 19:00 за сравнение. Проверяваме две неща след това... първо, дали не е стартирано от времето по график. И след това се уверяваме, че планираният час е в миналото - person musefan; 17.04.2012

Windows Service е непрекъснато работеща задача. Ако търсите нещо, което трябва да се изпълнява в определено време, напишете Планирана задача, Друга добра връзка.

person Sandeep    schedule 17.04.2012