Я новичок в .Net 4.0 Tasks, и я не смог найти то, что, как я думал, будет заменой или выполнением Таймера на основе задачи, например. периодическая задача. Есть ли такая вещь?
Обновление Я придумал то, что, по моему мнению, является решением моих потребностей, которое заключается в том, чтобы обернуть функциональность "Таймер" внутри Задачи с дочерними задачами, используя все преимущества CancellationToken и возвращая Задачу, чтобы иметь возможность участвовать в дальнейших шагах Задачи.
public static Task StartPeriodicTask(Action action, int intervalInMilliseconds, int delayInMilliseconds, CancellationToken cancelToken)
{
Action wrapperAction = () =>
{
if (cancelToken.IsCancellationRequested) { return; }
action();
};
Action mainAction = () =>
{
TaskCreationOptions attachedToParent = TaskCreationOptions.AttachedToParent;
if (cancelToken.IsCancellationRequested) { return; }
if (delayInMilliseconds > 0)
Thread.Sleep(delayInMilliseconds);
while (true)
{
if (cancelToken.IsCancellationRequested) { break; }
Task.Factory.StartNew(wrapperAction, cancelToken, attachedToParent, TaskScheduler.Current);
if (cancelToken.IsCancellationRequested || intervalInMilliseconds == Timeout.Infinite) { break; }
Thread.Sleep(intervalInMilliseconds);
}
};
return Task.Factory.StartNew(mainAction, cancelToken);
}