2013-02-26 34 views
0

我刚开始学习C#,我是一名Java程序员。在Java中,我能做到以下几点:C#每秒钟执行一个后台线程(预定)

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,但它似乎不是我正在寻找的。

非常感谢您

+1

查看http://msdn.microsoft.com/de-de/library/system.threading.timer.aspx或http://blogs.msdn.com/b/morgan/archive/2008 /12/18/periodic-execution-in-net.aspx – Alex 2013-02-26 15:39:11

回答

1

使用System.Timers.TimerInterval,有线来执行你需要定期逻辑Elapsed事件处理程序。

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

您不应该需要线程池才能完成此操作。

+0

谢谢史蒂夫。这似乎是我正在寻找的,我会试一试。 – jadrijan 2013-02-26 15:49:17

+1

如果你真的使用线程自己结束,尝试使用'任务并行库'而不是使用'System.Threading'原语定制构造 - 这反映了建议在某种程度上更喜欢'java.util.concurrent'。 – 2013-02-26 15:59:15

+0

非常感谢您的提示 – jadrijan 2013-02-26 16:03:15

相关问题