iT邦幫忙

0

C# 指定分鐘 執行.. timer

OMG~ , 小弟又來問問題了/images/emoticon/emoticon02.gif

上次有問.. 時間空格問題..解果搞錯了

客戶意思是 空格內 讓他輸入20 .. 或寫 10
代表,每整點 20分 , 10分 觸發 code 內容
比如每整點 13:20,14:20,15:20.....or 13:10,14:10,15:10...

不是讓他寫 60.70 每60分鐘 每70分鐘,觸發 code 內容/images/emoticon/emoticon06.gif

搞錯啦~

private void button4_Click(object sender, EventArgs e)
{

  int time = Convert.ToInt32(textBox1.Text.ToString());
  timer1.Interval = DateTime.Now.Hour + time ;
  timer1.Enabled = true;
  timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
        {
          button4_Click(button4, null);
                
        }
        
        private void button5_Click(object sender, EventArgs e)
        {
            timer1.Stop();
            timer1.Enabled = false;
            Application.Exit();
            Dispose();
        }


PS:textbox1.Text 預設值 是 1

請問要怎麼改才好...可以跑但是有點問題

1
Homura
iT邦研究生 5 級 ‧ 2018-09-10 17:20:33
最佳解答

不用每秒執行....
1分鐘執行一次就好

private void button4_Click(object sender, EventArgs e)
{
  timer1.Interval = 1000 * 60 ; // 每分鐘
  timer1.Enabled = true;
  timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
    if(Datime.Now.Minute.ToString() == textbox1.Text)
    {
        // 要跑的程式..
    }
}

private void button5_Click(object sender, EventArgs e)
{
    timer1.Stop();
    timer1.Enabled = false;
    Application.Exit();
    Dispose();
}
看更多先前的回應...收起先前的回應...
小魚 iT邦好手 1 級 ‧ 2018-09-11 08:15:50 檢舉

如果他希望20分到馬上執行,
還是要一秒判斷一次...

ted8224 iT邦新手 5 級 ‧ 2018-09-11 08:21:46 檢舉

是喔... @H 大 我是覺得是 最佳解答 ..剛有測沒問題
小魚大.. 那我改 秒看看 .. 測看看
謝謝 兩位大大../images/emoticon/emoticon08.gif

ted8224 iT邦新手 5 級 ‧ 2018-09-11 08:34:29 檢舉

/images/emoticon/emoticon06.gif

不能改秒.. 雖然改秒..會一到 到那個時間點就觸發..
但是 每 28分鐘(假如我設定28) 那60秒時間內一直在觸發條件..
設定分鐘 我個人覺得比較適當一點
謝謝@ 小魚大..

我是有拉一個Label 顯示 本機時間..

Homura iT邦研究生 5 級 ‧ 2018-09-11 08:52:22 檢舉

這個是以前做過卡機資料更新的經驗/images/emoticon/emoticon06.gif
可是如果像小魚說的
搞不好有比這更好的解法也說不定就是

ted8224 iT邦新手 5 級 ‧ 2018-09-11 08:55:43 檢舉

哈~
謝謝 @H大 /images/emoticon/emoticon08.gif

小魚 iT邦好手 1 級 ‧ 2018-09-11 09:08:31 檢舉

這是有解的,
如果怕重複觸發,
就用一些變數來判斷,
譬如

if(minute == 20)
{
   if(!trigger)
   {
      /*你要做的動作*/
      trigger = true;
   }
}
else
{
   trigger = false;
}
ted8224 iT邦新手 5 級 ‧ 2018-09-12 08:12:22 檢舉

@小魚大.. 謝謝

0
danking
iT邦研究生 3 級 ‧ 2018-09-10 17:12:33

每秒觸動一次 timer
觸動後檢查 DateTime.Now.Minute 是否與輸入的資料相同,若相同則就執行所需要的程式,不相通則結束檢查。

0
TWLuke
iT邦新手 4 級 ‧ 2018-09-10 17:13:51
private void button4_Click(object sender, EventArgs e)
{
  timer1.Interval = 1000 ; 每秒
  timer1.Enabled = true;
  timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
 int time = Convert.ToInt32(textBox1.Text.ToString());
 
 if(取出現在分鐘(DateTime.Now.Minute) % time  == 0)
 {
     XXXOOO的客戶需求
 }
}

private void button5_Click(object sender, EventArgs e)
{
    timer1.Stop();
    timer1.Enabled = false;
    Application.Exit();
    Dispose();
}

/images/emoticon/emoticon06.gif

ted8224 iT邦新手 5 級 ‧ 2018-09-11 08:20:19 檢舉

謝謝回答 .. /images/emoticon/emoticon08.gif

我要發表回答

立即登入回答