定期启动任务

时间:2019-03-08 07:42:26

标签: c# .net multithreading

我想定期(每分钟)在一个单独的线程中启动一个方法。我当时使用的是System.Timers.Timer,但我意识到计时器会导致内存泄漏。

我需要删除计时器并使用任务。第一个想法是通过以下方式启动任务:

_taskWork = Task.Factory.StartNew( DoWork );

在DoWork方法中:

private void DoWork()
{
    While(true)
    {
        // Stuff here

        Thread.Sleep(60000);
    }
}

有什么方法可以避免这种情况吗?

1 个答案:

答案 0 :(得分:0)

类似方法:异步等效项是Task.Delay(内部使用System.Threading.Timer)的while循环:

public async Task PeriodicFooAsync(TimeSpan interval, CancellationToken cancellationToken)
{
    while (true)
    {
        await FooAsync();
        await Task.Delay(interval, cancellationToken)
    }
}

这项工作对我来说很好,请refer以获得更多理解。