// this method is used to synchronise between dependent threads private void IndexChanged(OpenIndexModel indexModel) { _indexOverviewService = _serviceFactory.CreateIndexOverviewService(indexModel); var ui = TaskScheduler.FromCurrentSynchronizationContext(); var indexInfo = LoadInfo(); _eventAggregator.GetEvent <IndexInfoLoadedEvent>().Publish(indexInfo); _eventAggregator.GetEvent <FieldsLoadingEvent>().Publish(indexInfo); Task <IEnumerable <FieldInfo> > .Factory .StartNew(() => LoadFields().ToList()) .ContinueWith( t => { _eventAggregator.GetEvent <FieldsLoadedEvent>().Publish(t.Result); _eventAggregator.GetEvent <TermsLoadingEvent>().Publish(indexInfo); }, CancellationToken.None, TaskContinuationOptions.None, ui) .ContinueWith(t => LoadTerms().ToList()) .ContinueWith( t => _eventAggregator.GetEvent <TermsLoadedEvent>().Publish(t.Result), CancellationToken.None, TaskContinuationOptions.None, ui); }
private void IndexLoaded(OpenIndexModel index) { _documentService = _serviceFactory.CreateDocumentService(index); foreach (var result in _documentService.GetFields()) { _fields.Add(result); } }
public IIndexOverviewService CreateIndexOverviewService(OpenIndexModel index) { return(new IndexOverviewService(index)); }
public IDocumentService CreateDocumentService(OpenIndexModel index) { return(new DocumentService(index)); }
public IndexOverviewService(OpenIndexModel openIndexModel) { _openIndexModel = openIndexModel; }
public DocumentService(OpenIndexModel openIndexModel) { _openIndexModel = openIndexModel; }