基本上,我正在开发一个Windows服务,我问的是计算机:如果它是xx:xx:xx.xxx那么就做点什么。
不幸的是我无法将它与System.TimeSpan.Parse()进行比较:
timer = new Timer();
this.timer.Interval = 100;
if ((DateTime.Now.TimeOfDay == System.TimeSpan.Parse("02:30:00"))) //24-Hour
{
//do something
this.timer.Enabled = true;
}
此外,有没有办法在满足条件的情况下保持服务的监控,并且在没有计时器的情况下执行if-block中的代码?或者你真的需要计时器吗?
答案 0 :(得分:1)
你很少会在零毫秒的时间内以100毫秒的定时器间隔排队。这将导致您的比较失败。在比较的左侧尝试[DateTime]::Now.AddMilliseconds(0 - [DateTime]::Now.Millisecond).TimeOfDay
。
另外,您是否考虑过将此作为Windows控制台应用程序并使用Windows计划任务解雇?有时,这比写一项服务更好。
答案 1 :(得分:0)
您可以使用Quartz.NET库,这是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统。它非常有用且易于使用。
Here你可以得到一些关于此的教程。
您可以通过定义非常灵活的cron表达式来指定所需的计划。
Here是一些文档。
答案 2 :(得分:0)
如果您说02:30:00
是24格式的时间,例如HH:mm:ss
你可以使用
if("02:30:00".Equals(DateTime.Now.ToString("HH:mm:ss"))
{
// C# code goes here if both matchs
}
<强>更新强>
DateTime.Now.ToString(&#34; HH:MM:SS&#34)
这将仅返回小时:分钟:秒
答案 3 :(得分:0)
谢谢大家的回答。但是,我决定进行远程比较。
def generate_configurations(configurations, named_positions, current):
if len(current) == len(named_positions):
configurations.append(current)
return configurations
name, positions = named_positions[len(current)]
for x in positions:
if x not in current:
generate_configurations(configurations, named_positions, current + (x,))
return configurations