每n毫秒执行x个动作

时间:2012-12-19 14:04:19

标签: c# multithreading action

我有一个程序让我让用户创建几个函数,一旦他创建了所有函数,我每隔x毫秒运行一次。换句话说,我有类似的东西:

// functionsToExecute is of type = List<Action>
// x = some integer
while(true){

   foreach(Action action in functionsToExecute)
   {
       action();
   }

   Thread.Sleep(x);
}

现在我想让用户决定每个功能等待多长时间。例如,如果用户创建了2个函数,他可能希望第一个函数每1500毫秒运行一次,每1500个下一个函数。我正在考虑为这个场景创建两个线程,然后实现相同的。 但是如果用户创建了50个功能呢?我需要50个线程!

简而言之我想每n毫秒执行一次x次动作...创建此类算法的最佳方法是什么?例如,如果我有3个动作,我将每200毫秒执行第一个动作,下一个每500毫秒执行一次,最后一个每1000毫秒执行一次。

也许我需要与javascript中的SetTimout函数类似的内容

1 个答案:

答案 0 :(得分:3)

我会考虑使用ThreadPoolwalkthrough)。创建要处理的每个线程,并根据它们要查找的超时重复它。您还可以在需要线程停止时存储ManualResetEvent