Search
Write a publication
Pull to refresh

Comments 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>
в языке с прекрасными дженериками.
UFO landed and left these words here
Sign up to leave a comment.

Articles