Есть ли замена System.Threading на основе задач. Таймер?

Я новичок в Задачах .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);
}      
84
задан Gennady Vanin Геннадий Ванин 6 May 2013 в 15:29
поделиться