Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 8

А чем не устраивает обычные .NET средства, которое уже созданы для решения этой задачи?
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 можно приятнее использовать для тех же целей.

...a еще есть прекрасный мир Rx, где такие комбинаторные возможности открываются.

Ну что ж, я хотел написать решение с async/await, для сравнения, но обнаружил, что этот функционал доступен только начиная с .NET 4.5. Мы же продолжаем писать под 3.5. И пока все работает, решение о переходе на следующую версию рантайма принято не будет.

Пойду прыгать с парашютом в продакшен.
И пока все работает, решение о переходе на следующую версию рантайма принято не будет.

А оно "всегда" будет работать. Поэтому вы так навсегда и останетесь без async/await, TPL и прочей адекватной конкурентности.

Выглядит как вредный велосипед.
Особенно дико смотреть на
IEnumerable<object>
в языке с прекрасными дженериками.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации