У меня есть в С#
public static void Main()
{
var result = Foo(new Progress<int>(i =>
Console.WriteLine("Progress: " + i)));
Console.WriteLine("Result: " + result);
Console.ReadLine();
}
static int Foo(IProgress<int> progress)
{
for (int i = 0; i < 10; i++)
progress.Report(i);
return 1001;
}
Некоторые выходы Main:
Первый запуск:
Result: 1001
Progress: 4
Progress: 6
Progress: 7
Progress: 8
Progress: 9
Progress: 3
Progress: 0
Progress: 1
Progress: 5
Progress: 2
Второй запуск:
Progress: 4
Progress: 5
Progress: 6
Progress: 7
Progress: 8
Progress: 9
Progress: 0
Progress: 1
Progress: 2
Result: 1001
Progress: 3
и т.д...
Для каждого запуска выход отличается. Как я могу синхронизировать эти методы, чтобы прогресс отображался в том порядке, в котором они сообщаются, 0,1,... 9, а затем результат, равный 1001. Я хочу, чтобы результат был таким:
Progress: 0
.
.
.
Progress: 9
Result: 1001