Comments 8
А чем не устраивает обычные .NET средства, которое уже созданы для решения этой задачи?
async/await, Task.Delay, IProgress[T]?
Пример:
async/await, Task.Delay, IProgress[T]?
Пример:
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();
}
Не могу сказать, что не устраивает. Я еще не применял ни обычные средства, ни ко-итераторы для решения реальных задач. Только прикидывал возможности.
[sarkazm] Отдам даром парашют собственной разработки. Ни разу не прыгал, и в живую парашют не видел, но по моим прикидкам он должен сработать. [/sarkazm]
А как человек, который часто применяет это для решения реальных задач могу сказать, что async\await\TPL можно приятнее использовать для тех же целей.
А как человек, который часто применяет это для решения реальных задач могу сказать, что async\await\TPL можно приятнее использовать для тех же целей.
...a еще есть прекрасный мир Rx, где такие комбинаторные возможности открываются.
Ну что ж, я хотел написать решение с async/await, для сравнения, но обнаружил, что этот функционал доступен только начиная с .NET 4.5. Мы же продолжаем писать под 3.5. И пока все работает, решение о переходе на следующую версию рантайма принято не будет.
Пойду прыгать с парашютом в продакшен.
Пойду прыгать с парашютом в продакшен.
Выглядит как вредный велосипед.
Особенно дико смотреть на
Особенно дико смотреть на
IEnumerable<object>
в языке с прекрасными дженериками.Sign up to leave a comment.
Ко-итераторы на таймерах