C# 每2秒运行一次函数
使用来自C# 每2秒运行一次函数,c#,function,timer,C#,Function,Timer,使用来自 我对C#很陌生,但我不确定出了什么问题。在本例中,我尝试每隔2秒显示一个messagebox。没有错误,消息框根本不显示。只需将计时器的间隔设置为所需的值即可 200意味着200毫秒 所以Interval=2000意味着代码每两秒被提升一次 但你的问题在哪里?什么不起作用? 还有一些关于用户界面线程和非用户界面线程的问题。你一小时有60分钟,一分钟有60秒,一秒钟有1000毫秒,所以你可以 public void InitTimer() { timer1
我对C#很陌生,但我不确定出了什么问题。在本例中,我尝试每隔2秒显示一个messagebox。没有错误,消息框根本不显示。只需将计时器的间隔设置为所需的值即可 200意味着200毫秒 所以Interval=2000意味着代码每两秒被提升一次 但你的问题在哪里?什么不起作用?
还有一些关于用户界面线程和非用户界面线程的问题。你一小时有60分钟,一分钟有60秒,一秒钟有1000毫秒,所以你可以
public void InitTimer()
{
timer1 = new Timer();
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Interval = 200; // in milliseconds
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
MessageBox.Show("test");
}
您忘了在加载中调用函数。如果要避免锁定线程,您可以随时生成一个新线程并在那里继续轮询。使用与您相同的代码,但我尝试了您的代码(将200ms更改为2000ms),它每2秒显示一次消息框,因此问题不在于代码,而更可能在于您调用它的方式。我刚刚创建了一个示例Winforms应用程序,并将对InitTimer的调用放入表单的加载事件中:
timer1.Interval = 60 * 60 * 1000; // Every hour
创建项目时,是否创建了Windows窗体应用程序?例如,您不应该创建控制台应用程序
private void Form1_Load(object sender, EventArgs e)
{
InitTimer();
}
您需要在timer1之前添加一个计时器
这是可行的,但让舒尔启动计时器200毫秒!=2秒。你的实际问题是什么?您是否遇到错误,或者代码根本没有被调用?2秒将是2000毫秒,而不是200毫秒。您确定您正在调用
InitTimer()
?如果timer1\u Tick函数需要1分钟才能完成怎么办?谢谢,这很有效,我没有在加载中调用该函数,DOH!我不会创建这样的“休眠函数”,因为auf死线程/休眠线程…需要15次重复,否则我会:如果这是在UI线程上休眠,这是个坏主意--这将阻止windows消息的处理…@Boas Enkler你是对的。这是一个简单的例子,但仍然不应该使用它。设置MessageBox调用的断点,然后查看它是否被引发。您可能误解了问题,他希望每2秒,而不是每小时一次。这是真的,我没有调用InitTime();谢谢
Timer timer1 = new Timer();
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Interval = 2000; // in miliseconds
timer1.Start();