2010-07-23 3 views
1

Я написал ONW окна service..in, что у меня есть логика, что некоторая часть кода необходимо выполнить в определенное время .. моя служба работает в каждом мин ..службы Windows

например

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

    'execute this logic 

End If 

Но РМКО облицовочный проб, что она рассматривает секунды во время работы, так не может сравниться над временем ...

Запроса вы предложить какой-нибудь другой способ ..

+1

У вас есть опечатка: во второй строке есть пробел. Это никогда не сравнится с истиной. В противном случае ваша логика кажется правильной. –

ответ

3

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

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

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

+0

такой же предмет я сделал..but все еще смотря выше проблема .. –

+0

@ amitpatil200 - у вас есть дополнительное пространство в строке, с которой вы сравниваете. Это намеренно? Вы также не используете оператор сравнения ('=='), а один '='. – Oded

+0

в VB вы используете только один =. :) –

0

Будет ли это решить вашу проблему?

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

    'execute this logic 

End If 
3
DateTime checkTime = new DateTime(2010, 23, 7, 1, 10, 0); 
DateTime now = DateTime.Now; 
if(now >= checkTime && now < checkTime.AddSeconds(60)) 
{ ... } 

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

1
DateTime target = DateTime.Parse("7/23/2010 1:10"); 
if (DateTime.Now >= target) { ... } 

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

0

я сделал этот тип кодирования в 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} 

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