2014-04-24 52 views
0

Hye那裏我是C#的新手,只是想手動運行定時器!所以我只想知道我在代碼中做錯了什麼。我只需要在我的計時器中顯示一條簡單的消息!我的代碼是:使用定時器定期更改值

public partial class Form1 : Form 
{ 
    System.Timers.Timer time; 

    public Form1() 
    { 
     InitializeComponent(); 
     time = new System.Timers.Timer(); 
     time.Interval = 10; 
     time.Enabled = true; 
     time.Start(); 
    } 

    private void time_Tick(object e, EventArgs ea) 
    { 
     for (int i = 0; i < 100; i++) 
     { 
      Console.WriteLine(i); 
     } 
    } 
} 

請讓我知道如果我做錯了事先謝謝了!

+1

請不要修改問題,以便正確答案不再適用於這個問題。如果原始問題得到正確回答,請回答正確,然後在評論中提出新問題或提出後續問題。 – Jite

回答

4

您忘記收聽Elapsed活動。地址:

time.Elapsed += new ElapsedEventHandler(time_Tick); 

定時器的初始化,它應該叫當計時器已經過去了回調函數(目前爲10ms)

還要注意回調函數將被調用 10女士。
如果您希望它停止運行,請在回調函數中添加time.Stop();

+2

不需要'time.Enabled = true;'調用,調用'time.Start();'將啓動並啓用定時器本身。 – Jite

+0

雖然我用你的答案,但它暫停並顯示輸出立即 –

+0

是的,你設置間隔爲10,這是10毫秒。如果你希望它是10秒,那麼間隔爲10000。 – Jite

1

編輯:

也許是更好地使用System.Windows.Forms.Timer類,而不是System.Timers.Timer。在那裏你可以調用你的函數並訪問你的文本框。

否則,您將通過嘗試訪問time_Tick中的文本框txt來收到InvalidOperationException。

你不需要循環增加你的價值i。只需重新啓動計時器並設置新的值。你現在正在做的是等待ONE滴答(持續1000毫秒),然後開始你的循環。

例如,這可能是你的方法:

using System; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
    private int i = 0; 
    private Timer time; 
    public Form1() 
    { 
     InitializeComponent(); 
     time = new Timer(); 
     time.Tick += time_Tick; 
     time.Interval = 1000; 
     time.Start(); 
    } 

    private void time_Tick(object e, EventArgs ea) 
    { 
     if (i < 100) 
     { 
      txt.Text = i.ToString(); 
      i++; 
      time.Start(); 
     } 

    } 
    } 
} 
+0

time.Tick給出錯誤! –

+0

哪些錯誤?你有沒有像我提到的那樣替換你的用法? –

+0

它顯示了我沒有任何停頓的輸出,我想要的是隻顯示1000循環之後的循環輸出,例如i = 1然後暫停i = 2然後暫停等等!像在Java中我可以使用睡眠方法 –