C# 使用计时器定期更改值
嘿,我是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
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()如果希望回调函数停止运行,则在回调函数中执行code>。您忘记了侦听已用事件。加:
time.Elapsed += new ElapsedEventHandler(time_Tick);
初始化计时器,并在计时器已过(10毫秒)时调用回调函数
还要注意,回调函数将每10毫秒调用一次。
添加time.Stop()如果希望回调函数停止运行,请在回调函数中进行编码>。编辑:
也许最好使用classSystem.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();
}
}
}
}
编辑:
也许最好使用classSystem.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”的定义,也没有扩展名