C#每隔几秒执行一次后台线程(预定)

时间:2013-02-26 15:33:47

标签: c# multithreading threadpool

我刚开始学习C#,我是一名Java程序员。在Java中,我能够执行以下操作:

    int corePoolSize = 1;
    long initialDelay = 0;//0 seconds
    long delay = 60;//60 seconds
    ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(corePoolSize);
    stpe.scheduleWithFixedDelay(new MyDemoClass(), initialDelay, delay, TimeUnit.SECONDS);

将每隔60秒在后台线程中执行Runnable“MyDemoClass”。

我如何在C#中执行此操作?我看过它的ThreadPool http://msdn.microsoft.com/en-us/library/3dasc8as(v=vs.80).aspx,但它似乎不是我想要的。

非常感谢

2 个答案:

答案 0 :(得分:1)

System.Timers.TimerInterval一起使用,连接到执行所需定期逻辑的Elapsed事件处理程序。

  

Timer组件是一个基于服务器的计时器,允许您使用   指定引发Elapsed事件的重复间隔   你的申请。然后,您可以处理此事件以定期提供   处理。例如,假设您有一个必须的关键服务器   每周7天,每天24小时不间断运行。你可以创建一个   使用Timer定期检查服务器并确保的服务   系统已启动并正在运行。如果系统没有响应,   该服务可能会尝试重新启动服务器或通知   管理员。

你不应该需要线程池来完成这项工作。

答案 1 :(得分:1)

我认为你在寻找System.Threading.Timer
  http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx

  

“使用TimerCallback委托指定您希望Timer执行的方法。定时器委托是在构造定时器时指定的,并且不能更改。该方法不会在创建定时器的线程上执行;它会执行在系统提供的ThreadPool线程上。“