C#循环任务只执行一次

时间:2016-01-30 16:01:21

标签: c#

我希望BuildFeed每秒都运行一次 这段代码只运行一次。

public class FeedDal{
        public FeedDal()
        {
          new Task(() => BuildFeed(), new CancellationToken(false), TaskCreationOptions.LongRunning).Start();
        }

        private void BuildFeed()
        {
            //going here only once
        }
}

由于

2 个答案:

答案 0 :(得分:1)

上面代码只运行一次的原因是,你只需要调用一次。

为了在每x秒内永久调用某种方法,您可以使用Timer

请尝试以下代码。

public static void FeedDal()
{
  var inerval = 1000;
  var timer = new System.Timers.Timer();
  timer.Elapsed += (o,e) => new Task(() 
  => BuildFeed(), new CancellationToken(false), TaskCreationOptions.LongRunning).Start();
  timer.Interval = inerval;
  timer.Start();
}

答案 1 :(得分:0)

因为您只调用一次该函数。如果你想多次打电话,你必须做这样的事情:

public class FeedDal
{
    public FeedDal()
    {
      while (true)
      {
          new Task(() => BuildFeed()).Start();
          Thread.Sleep(1000);
      }
    }

    private void BuildFeed()
    {
        // Will go here once a second.
    }
}

希望这有帮助,

杰森。