public async Task <IEnumerable <int> > ParallelSync() { var list = new List <int>(); var tasks = new Task[10]; var context = new OneAtAtTimeSyncContext(); try { SynchronizationContext.SetSynchronizationContext(context); for (int i = 0; i < tasks.Length; i++) { tasks[i] = GetNumberAsync(list, i); } GetNumberAsync(list, i).Wait(); await Task.WhenAll(tasks); } finally { SynchronizationContext.SetSynchronizationContext(null); } return(list); }
public async Task ParallelAsync() { var list = new List <int>(); var tasks = new Task[10]; var context = new OneAtAtTimeSyncContext(); SynchronizationContext.SetSynchronizationContext(context); for (int i = 0; i < tasks.Length; i++) { tasks[i] = GetNumberAsync(list, i); } await Task.WhenAll(tasks); SynchronizationContext.SetSynchronizationContext(null); }