Pull to refresh

Comments 5

Спасибо, познавательная статья. Не подскажите, как можно грамотно зациклить выполнение задачи, т.е. реализовать что-то наподобие таймера, только без интервала ожидания?
Не совсем понял вопрос. Можно пример того, что хочется получить?
Заморочно писать все эти продолжения, ловить ошибки и синхронизировать результаты вычислений.
Есть отличный набор экстеншенов, который используется в ASP.NET Web Stack. С их помощью можно писать вот так:

Немного кода
Task<int>.Factory.StartNew(() =>
{
    // Долгая задача
    Thread.Sleep(TimeSpan.FromSeconds(5));
    return int.MaxValue;
})
.Then(number =>
{
    // Обработка результата
    Console.WriteLine("Result: {0}", number);
})
.Catch(info =>
{
    // Ловим ошибки
    Console.WriteLine("Error: {0}", info.Exception);
    return info.Handled();
})
.Finally(() =>
{
    // Завершаем
    Console.WriteLine("Done.");
});


Очень помогает. Статья по теме. Код тут и тут.
Набор экстеншенов из ASP.NET Web Stack помечен как internal и этому есть основания. К примеру, в методе IterateImplIncompleteTask(TaskHelpers.cs) явно описана возможность зацикливания кода. Самолично фиксил это для Web API.
Ух ты! Ух ты! Ух ты! Какая красота! ^_____^
Sign up to leave a comment.

Articles