public async Task Synchronize(ISynchronizationLogger logger) { var synchronizationContext = await _contextFactory.Create(); await _inner.Synchronize(logger, synchronizationContext); await _contextFactory.SynchronizationFinished(synchronizationContext); }
public void AboutSynchronizationContext() { var d = new Dictionary <int, int>(); ISynchronizationContextFactory synchronizationContextFactory = FILL_ME_IN; var synchronizationContext = synchronizationContextFactory.Create(); var threadPump = new TaskRunner(synchronizationContext, (_) => (synchronizationContext as IConsumerSideSynchronizationContext)?.Complete(), // Run continuations and propagate any exceptions (Task task) => { (synchronizationContext as IConsumerSideSynchronizationContext)?.RunOnCurrentThread(); task.GetAwaiter().GetResult(); }); threadPump.Run(async() => await AboutThreadSynchronizationHelper.PerformTaskAsync(d).ConfigureAwait(false)); Assert.True(d.Count == 1); }