예제 #1
0
 public static EasyAccessRepositoryAdapter <TEntityId, TEntityVersion, TEntity, TContext> Create <TEntityId, TEntityVersion, TEntity, TContext>(
     IVersionAwareReadOnlyEntityRepository <TEntityId, TEntityVersion, TEntity, TContext> readRepository,
     IBatchWriteOnlyEntityRepository <TEntityId, TEntityVersion, TEntity, TContext> writeRepository,
     ISynchronizationContextFactory <TContext> contextFactory)
 {
     return(new EasyAccessRepositoryAdapter <TEntityId, TEntityVersion, TEntity, TContext>(readRepository, writeRepository, contextFactory));
 }
        public ContextCreatingSynchronizerDecorator(
            IPartialSynchronizer <TAtypeEntityId, TAtypeEntityVersion, TBtypeEntityId, TBtypeEntityVersion, TContext> inner,
            ISynchronizationContextFactory <TContext> contextFactory)
        {
            if (inner == null)
            {
                throw new ArgumentNullException(nameof(inner));
            }
            if (contextFactory == null)
            {
                throw new ArgumentNullException(nameof(contextFactory));
            }

            _inner          = inner;
            _contextFactory = contextFactory;
        }
        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);
        }
예제 #4
0
 public static EasyAccessRepositoryAdapter <TEntityId, TEntityVersion, TEntity, TContext> Create <TEntityId, TEntityVersion, TEntity, TContext> (
     IEntityRepository <TEntityId, TEntityVersion, TEntity, TContext> repository,
     ISynchronizationContextFactory <TContext> contextFactory)
 {
     return(new EasyAccessRepositoryAdapter <TEntityId, TEntityVersion, TEntity, TContext> (repository, contextFactory));
 }
예제 #5
0
 public RunOnUIThread(ISynchronizationContextFactory factory)
 {
     this.factory = factory;
 }