Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public static Task Progress(IProgress<ProgressInfo> progress)
{
var iteration = 0;
var delay = TimeSpan.FromSeconds(1);
while(true)
{
await Task.Delay(delay);
progress.Report(new ProgressInfo(iteration, "iteration: " + iteration))
iteration++;
}
}
public static Task Timeout(this Task anotherTask, TimeSpan timeout)
{
var timeoutTask = Task.Delay(timeout);
if (await Task.WhenAny(anotherTask, timeoutTask) == timeoutTask)
throw new TimeoutException();
}
...a еще есть прекрасный мир Rx, где такие комбинаторные возможности открываются.
IEnumerable<object>
в языке с прекрасными дженериками.
Ко-итераторы на таймерах