Я новичок в Задачах .Net 4.0 и не смог найти то, что, как я думал, будет заменой на основе задач или реализацией таймера, например периодической задачей. Есть ли такая вещь?
Обновление Я придумал то, что, по моему мнению, является решением моих потребностей, которое заключается в том, чтобы заключить функцию «Таймер» в задачу с дочерними задачами, которые все используют 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);
}