C# 循环任务仅执行一次

本文关键字:一次 执行 循环 任务 | 更新日期: 2023-09-27 18:32:36

我希望BuildFeed每秒运行一次。
此代码仅运行一次。

public class FeedDal{
        public FeedDal()
        {
          new Task(() => BuildFeed(), new CancellationToken(false), TaskCreationOptions.LongRunning).Start();
        }
        private void BuildFeed()
        {
            //going here only once
        }
}

谢谢

C# 循环任务仅执行一次

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

为了在每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();
}

因为你只调用该函数一次。如果您希望它多次调用,则必须执行以下操作:

public class FeedDal
{
    public FeedDal()
    {
      while (true)
      {
          new Task(() => BuildFeed()).Start();
          Thread.Sleep(1000);
      }
    }
    private void BuildFeed()
    {
        // Will go here once a second.
    }
}

希望这有帮助,

杰森。