我有一个代码可以创建一个无限循环的任务来重复操作,例如检查ftp或网站
public static Task Start(Action<WorkContext> action, WorkContext wcntx, int timeout)
{
AutoResetEvent resetEvent = new AutoResetEvent(false);
wcntx.ResetEvents.Add(resetEvent);
Task task = Task.Factory.StartNew(() =>
{
wcntx.CancellationToken.ThrowIfCancellationRequested();
while (true)
{
action(wcntx);
//Delay
resetEvent.WaitOne(timeout,true);
//Checking CancellationToken
wcntx.CancellationToken.ThrowIfCancellationRequested();
}
}, wcntx.CancellationToken);
return task;
}
它消耗了大量的CPU,根据性能分析器,主CPU负载在这部分
resetEvent.WaitOne(timeout,true);
有没有解决方法可以解决这个问题?