每隔很多秒执行一次这么多次事件

时间:2012-01-20 10:50:25

标签: c#

我目前正在开发一个c#项目,我需要每隔很多秒执行一次任务很多次。

例如,每1秒写入控制台5次。我怎么能这样做呢。

感谢您提供的任何帮助。

5 个答案:

答案 0 :(得分:4)

您可以对Timer事件使用Timer.Elapsed和绑定事件。

using System.Timers;

示例代码:

Timer timer = new Timer();
timer.Elapsed += (sender, eventArgs) =>
{
    for (int i = 0; i < 5; i++)
    {
        Console.Write(i);            
    }
};

这是一个控制台应用程序,还是在另一个线程上运行它?

答案 1 :(得分:2)

对于这样的简短内容,请使用计时器。有两个主要选择:

System.Threading.Timer

System.Windows.Forms.Timer

前者使用ThreadPool,后者使用UI事件。它们都暴露了指定和间隔的能力,以及要附加的回调方法或事件,以便放置自定义代码。

对于较长时间不活动,请查看使用Windows调度程序(操作系统一)或调度框架(如Quartz.NET)进行调度。

请注意,计时器的准确性会有所不同,但实际上并不在人类可以检测到的范围内: - )

另请注意,线程计时器的回调将在任意ThreadPool线程上返回,因此您可以有效地最终“多线程化”代码而不会意识到它。

还有System.Timers.Timer,它公开了一个事件。有关可用的不同计时器的文章can be found here

答案 2 :(得分:0)

我不认为它会影响你,但它仍然值得知道 - Windows不是一个实时操作系统;如果你要求每隔X毫秒做一些事情,那就不一定了,因为它的出现取决于各种各样的东西。

答案 3 :(得分:0)

您可以创建一个线程来执行此操作。如果你想做很多处理,特别有用!这是一个每1秒(1000毫秒)工作的线程示例:

public void Start()
{
    running = true;
    thread = new Thread(new ParameterizedThreadStart(ThreadFunction));
    thread.Start();
}

public virtual void ThreadFunction(object o)
{
    var insert = false;
    while (running)
    {
        //Do work
        Thread.Sleep(1000);
    }
}

答案 4 :(得分:-2)

试试这个

While (true)
{
for (int i=0; i<5; i++)
{
 console ("Hello");
}
//this will pause for 1 sec (1000msec)
Thread.sleep(1000);
}