Следуя этому посту , я хочу распараллелить этот метод:
public IEnumerable<string> GetAllLogs(IEnumerable<IComputer> computers)
{
foreach (var cpt in computers)
{
foreach (var log in cpt.GetLogs())
{
yield return log;
}
}
}
Я хочу, чтобы метод "yield возвращает" журнал, когда один из методов GetLogs завершен. Если у меня есть 4 компьютера, который возвращает:
- Компьютер 01: «a», «b», «c», «d», «e»
- Компьютер 02: «1», «2», «3», «4», «5»
- Компьютер 03: «альфа», «бета», «гамма», «дельта», «эпсилон»
- Компьютер 04: «Я», «II», «III», «IV», «V»
При "последовательном методе" вывод будет:
a
b
c
d
e
1
2
3
4
5
alpha
beta
gamma
delta
epsilon
I
II
III
IV
V
И методы запускаются за 20 секунд. в методе GetLogs
есть Thread.Sleep(1000)
.
Я хочу, чтобы вывод выглядел так:
III
a
4
gamma
b
c
IV
5
d
II
beta
e
1
2
delta
alpha
3
epsilon
I
и работает за несколько секунд.
Я хочу, чтобы методы возвращали IEnumerable