Служба Windows - PullRequest
       1

Служба Windows

1 голос
/ 23 июля 2010

Я написал onw windows service .. у меня есть логика, которая должна выполнять некоторую часть кода в определенное время .. мой сервис работает каждую минуту ..

например.

If (DateTime.Now.ToString("MM/dd/yyyy hh:mm") = "7/23/2010 1:10 ") Then

    'execute this logic

End If

Но я сталкиваюсь с проблемой, что он учитывает секунды во время работы, поэтому не может сравниться со временем ...

прошу вас предложить другой способ ..

Ответы [ 5 ]

3 голосов
/ 23 июля 2010
DateTime checkTime = new DateTime(2010, 23, 7, 1, 10, 0);
DateTime now = DateTime.Now;
if(now >= checkTime && now < checkTime.AddSeconds(60)) 
{ ... }

Старайтесь избегать использования ToString в качестве этого типа сравнения, вы можете явно сравнивать дату и время

3 голосов
/ 23 июля 2010

Я предполагаю, что вы работаете в цикле и сравниваете с текущим временем - это занятое ожидание, а не рекомендуемый способ выполнения синхронизированной работы.

Используйте таймер в вашем сервисе и установите интервал в 60000 миллисекунд. Поместите код, который должен быть запущен в событие tick.

См. эту статью о различных классах таймеров в .NET.

1 голос
/ 23 июля 2010
DateTime target = DateTime.Parse("7/23/2010 1:10");
if (DateTime.Now >= target) { ... }

Итак, ваш код будет выполняться в следующем цикле по истечении заданного времени (конечно, вы должны убедиться, что он выполняется ровно один раз, если это то, что вам нужно).

0 голосов
/ 27 августа 2016

я сделал этот тип кодирования на C # в своем сервисе, позвольте мне показать вам код, где я сравниваю время

 string SetTime = Convert.ToDateTime(dtBackupData.Rows[i]["BackUpTime"].ToString()).ToString("HH:mm");
            int t1 = Int32.Parse(SetTime.Replace(":", ""));
            int t2 = Int32.Parse(DateTime.Now.ToString("HH:mm").Replace(":", ""));

if (Convert.ToDateTime(dtBackupData.Rows[i]["BackUpTime"].ToString()).ToString("HH:mm") == DateTime.Now.ToString("HH:mm") || t2 > t1)
            {your custom code}

надеюсь, что это решит вашу проблему, так как она довольно хорошо работает для меня. для меня код состоит в том, что он выполняет резервное копирование базы данных в определенное время.

0 голосов
/ 23 июля 2010

Решит ли это вашу проблему?

If (DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss") = "7/23/2010 1:10:00") Then

    'execute this logic

End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...