使用Timer定期更改值

时间:2014-04-24 06:19:10

标签: c# timer

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);
        }
    }
}

如果我做错了,请告诉我,提前谢谢!

2 个答案:

答案 0 :(得分:4)

您忘了听Elapsed事件。添加:

time.Elapsed += new ElapsedEventHandler(time_Tick); 

计时器的初始化,它应该在计时器结束时调用回调函数(在10ms时刻)

另请注意,回调函数将每 10毫秒调用 如果您希望它停止运行,请在回调函数中添加time.Stop();

答案 1 :(得分:1)

<强>编辑:

使用课程System.Windows.Forms.Timer代替System.Timers.Timer可能更好。在那里,您可以调用您的功能并访问您的文本框。

否则,您将通过尝试访问txt中的文本框time_Tick来收到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();
        }

    }
  }
}