我目前正在开发一个c#项目,我需要每隔很多秒执行一次任务很多次。
例如,每1秒写入控制台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)
对于这样的简短内容,请使用计时器。有两个主要选择:
和
前者使用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);
}