2013-12-19 70 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,但不包含字符串。