我想定期(每分钟)在一个单独的线程中启动一个方法。我当时使用的是System.Timers.Timer
,但我意识到计时器会导致内存泄漏。
我需要删除计时器并使用任务。第一个想法是通过以下方式启动任务:
_taskWork = Task.Factory.StartNew( DoWork );
在DoWork方法中:
private void DoWork()
{
While(true)
{
// Stuff here
Thread.Sleep(60000);
}
}
有什么方法可以避免这种情况吗?
答案 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以获得更多理解。