Windows服务

时间:2010-07-23 07:48:05

标签: vb.net windows-services

我已经写过onw windows service ..因为我有一些逻辑,这些代码需要在某段时间内执行..我的服务每隔一分钟运行一次..

e.g。

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

    'execute this logic

End If

但我面临的问题是它在考虑运行时的秒数,因此无法比较上述时间...

请求您提出其他建议。

5 个答案:

答案 0 :(得分:3)

我假设您正在循环运行并与当前时间进行比较 - 这是一个忙碌的等待而不是推荐的运行定时工作的方式。

在您的服务中使用计时器,并将间隔设置为60000毫秒。将需要运行的代码放在tick事件中。

请参阅this有关.NET中不同计时器类的文章。

答案 1 :(得分:3)

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

尽量避免使用ToString这种类型的比较,您可以明确比较日期时间

答案 2 :(得分:1)

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

因此,您的代码将在目标时间之后的下一个周期执行(当然,您需要确保它只运行一次,如果它是您需要的那样)。

答案 3 :(得分:0)

这会解决您的问题吗?

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

    'execute this logic

End If

答案 4 :(得分: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}

希望这能解决你的问题,因为它对我来说非常有用。代码对我的作用是它在特定时间备份数据库。