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