2013-12-19 37 views
2

我正在创建一个项目,该项目允许我创建一个程序并为其提供任务。现在我正在努力在哪里告诉它设置闹钟。闹钟功能运行良好,但我遇到了问题。当我设置闹钟时,我可以说“晚安”,然后程序将我的显示器关闭进入睡眠模式。当警报关闭时,我希望它在10秒或15秒内重新启动显示器,然后执行警报熄灭时发生的代码。在报警前10秒执行命令

这里有点我的代码:

DateTime now = DateTime.Now; 
string time = now.GetDateTimeFormats('t')[0]; 

if (time == Settings.Default.Alarm && Settings.Default.AClockEnbl == true) 
{ 
    SetMonitorInState(MonitorState.MonitorStateOn); 
} 
if (time == Settings.Default.Alarm && Settings.Default.AClockEnbl == true) 
{ 
    //All other alarm code 
} 

我想第一个if语句告诉命令Settings.Default.Alarm

任何人可以帮助之前发生10秒?

回答

0

如果您现在将15秒添加到DateTime并将其与闹钟时间进行比较,则可以使用该功能打开监视器。

然后,您现在可以执行剩余的代码(无需额外的15秒)等于闹钟时间。

正如您在评论中提到的,您需要比较DateTime而不是字符串,并使用TimeSpan增加15秒。

+1

是的,但他需要更多的帮助来做到这一点。他将时间比作一个字符串(!)。 – Rup

+0

我用你的建议,它的效果很好。之前,在其他代码发生同时打开时,其他代码没有及时发生,因为显示器需要时间加载。这有很大帮助。谢谢。 –

+0

好听,如果解决了问题,记得标记为已接受! – Josh

0

可以使用TimeSpan来抵消你的约会:

beforeTime = now + TimeSpan.FromSeconds(15); 

然后用beforeTime.GetDateTimeFormats('t')[0]比较Settings.Default.Alarm以打开显示器。

这就是说,尝试重构你的代码,并摆脱这些字符串。如果您真的想要,请使用DateTimeTimeSpan或者自Epoch以来的ms,但不包含字符串。