C# 使用计时器定期更改值

C# 使用计时器定期更改值,c#,timer,C#,Timer,嘿,我是C#新手,只想手动运行计时器!所以我只想知道我在代码中做错了什么。我只需要在计时器中显示一条简单的消息!我的代码是: public partial class Form1 : Form { System.Timers.Timer time; public Form1() { InitializeComponent(); time = new System.Timers.Timer(); time.Interval

嘿,我是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:表单
{
系统计时器计时器时间;
公共表格1()
{
初始化组件();
time=新系统.Timers.Timer();
时间间隔=10;
time.Enabled=true;
time.Start();
}
私有无效时间(对象e、事件参数ea)
{
对于(int i=0;i<100;i++)
{
控制台写入线(i);
}
}
}

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

您忘了收听
已过去的
事件。加:

time.Elapsed += new ElapsedEventHandler(time_Tick); 
初始化计时器,并在计时器已过(10毫秒)时调用回调函数

还要注意,回调函数将每10毫秒调用一次。

添加
time.Stop()

您忘记了侦听
已用事件。加:

time.Elapsed += new ElapsedEventHandler(time_Tick); 
初始化计时器,并在计时器已过(10毫秒)时调用回调函数

还要注意,回调函数将每10毫秒调用一次。

添加
time.Stop()

编辑:

也许最好使用class
System.Windows.Forms.Timer
而不是
System.Timers.Timer
。在那里你可以调用你的函数,也可以访问你的文本框

否则,您将通过尝试访问
time\u Tick
中的文本框
txt
收到InvalidOperationException

你不需要一个循环来增加你的值
i
。只需重新启动计时器并设置新值。您现在所做的是等待一次(持续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();
        }

    }
  }
}
使用系统;
使用System.Windows.Forms;
命名空间Windows窗体应用程序1
{
公共部分类Form1:Form
{
私有整数i=0;
私人定时器时间;
公共表格1()
{
初始化组件();
时间=新计时器();
time.Tick+=时间_Tick;
时间间隔=1000;
time.Start();
}
私有无效时间(对象e、事件参数ea)
{
如果(i<100)
{
txt.Text=i.ToString();
i++;
time.Start();
}
}
}
}

编辑:

也许最好使用class
System.Windows.Forms.Timer
而不是
System.Timers.Timer
。在那里你可以调用你的函数,也可以访问你的文本框

否则,您将通过尝试访问
time\u Tick
中的文本框
txt
收到InvalidOperationException

你不需要一个循环来增加你的值
i
。只需重新启动计时器并设置新值。您现在所做的是等待一次(持续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();
        }

    }
  }
}
使用系统;
使用System.Windows.Forms;
命名空间Windows窗体应用程序1
{
公共部分类Form1:Form
{
私有整数i=0;
私人定时器时间;
公共表格1()
{
初始化组件();
时间=新计时器();
time.Tick+=时间_Tick;
时间间隔=1000;
time.Start();
}
私有无效时间(对象e、事件参数ea)
{
如果(i<100)
{
txt.Text=i.ToString();
i++;
time.Start();
}
}
}
}


time.Enabled=true调用,调用
time.Start()
将启动并启用计时器本身。虽然我使用了您的答案,但它会暂停并在onceYes显示输出,您将间隔设置为10,即10毫秒。如果你希望它是10秒,那么间隔是10000。参见我的编辑我想在1000个间隔后显示for循环的值,但它在整个间隔后显示所有值不确定你想在那里做什么,但作为另一个问题,我会说这会更好,因为如果我没有完全误解的话,它与最初的问题并不相关并且
time.Enabled=true调用,调用
time.Start()
将启动并启用计时器本身。虽然我使用了您的答案,但它会暂停并在onceYes显示输出,您将间隔设置为10,即10毫秒。如果你希望它是10秒,那么间隔是10000。参见我的编辑我想在1000个间隔后显示for循环的值,但它在整个间隔后显示所有值不确定你想在那里做什么,但作为另一个问题,我会说这会更好,因为如果我没有完全误解的话,它与最初的问题并不相关哪些错误?你是否像我提到的那样替换了你的用法?它显示了输出,没有任何停顿。我想要的是,每隔1000个间隔显示for循环的输出,如i=1,然后暂停i=2,然后暂停等等!像在Java中一样,我可以使用sleep methodSystem。Timer不包含'Tick'的定义,也不包含用于接受System类型的第一个参数的扩展方法'Tick'。可以找到Timer…Tick是System.Windows.Forms.Timer命名空间的一部分,而不是System.Timers,请检查答案的第一行以了解有关该类型的信息。哪些错误?你是否像我提到的那样替换了你的用法?它显示了输出,没有任何停顿。我想要的是,每隔1000个间隔显示for循环的输出,如i=1,然后暂停i=2,然后暂停等等!和Java一样,我可以使用sleep methodSystem.Timer不包含“Tick”的定义,也没有扩展名