2014-01-24 72 views
0

我正在製作一個程序,在後臺運行,並在一天中的特定時間,它會彈出一個窗口,指示鍛鍊。 (適用於我工作的上班族)垃圾郵件消息框c#

問題是:當需要練習說明的時候,我想要一個消息框彈出並詢問您是否準備好了。 我在「if(blabla == true)」裏面有這個消息框代碼,所以它會持續發送垃圾郵件。

我該如何避免這種情況?我看不到任何其他地方放置消息框。

它基本上是:

if (DateTime.Now.ToString("HH:mm") == "09:00") 
{ 
    progress = true; 
} 

if(progress == true) 
{ 
    DialogResult dialogResult = MessageBox.Show("Start?", "Bla Bla",  MessageBoxButtons.YesNo); 
if(dialogResult == DialogResult.Yes) 
{ 
    exercise.Action(); 
} 
} 

有沒有辦法有對話框在同一個地方,但有它出現一次?會讓我的項目變得更容易。

謝謝!

+0

顯示更多代碼。你在哪裏調用這個方法 –

+1

我想你需要'(DateTime.Now.ToString(「HH:mm:ss」)==「09:00:00」)'作爲條件從9到10 –

+0

代碼在void _Ongoing(object sender,EventArgs e) private void Form1_Load_1(object sender,EventArgs e) { _Timer.Interval = 1000; _Timer.Tick + = new EventHandler(_Ongoing); _Timer.Start(); } 正如你所看到的,它每秒更新一次。 –

回答

1

這不是C#或WinForms問題,它是一個算法問題。嘗試首先設計算法,然後將其轉換爲您選擇的編程語言。

怎麼樣以下(僞代碼,假設你要打斷你的人每個整點):

nextHour = 9 

loop forever: 
    if now = nextHour:00 
     show message box 
     if answer = yes 
      exercise 
     nextHour++ 
    else 
     sleep for a minute 

這將顯示恰好一次消息框後增加從9 nextHour至10。


還有就是,其實,另一種選擇:你試圖實現一個調度,執行在某個時間某個動作的程序。 Windows已經包含一個調度程序,Windows Task Scheduler

因此,不是重新發明輪子,你可以讓你的程序是這樣的:

show message box 
if answer = yes 
    exercise 

它編譯成一個exe和設置Windows任務調度程序來運行它每隔一小時(或其他頻率你的用戶需要)。

+0

謝謝。你是對的。 –

+0

永遠循環?那麼'Timer'呢?他們已經被棄用了嗎? –