コード例 #1
0
        // 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);
        }
コード例 #2
0
 private void IndexLoaded(OpenIndexModel index)
 {
     _documentService = _serviceFactory.CreateDocumentService(index);
     foreach (var result in _documentService.GetFields())
     {
         _fields.Add(result);
     }
 }
コード例 #3
0
 public IIndexOverviewService CreateIndexOverviewService(OpenIndexModel index)
 {
     return(new IndexOverviewService(index));
 }
コード例 #4
0
 public IDocumentService CreateDocumentService(OpenIndexModel index)
 {
     return(new DocumentService(index));
 }
コード例 #5
0
 public IndexOverviewService(OpenIndexModel openIndexModel)
 {
     _openIndexModel = openIndexModel;
 }
コード例 #6
0
 public DocumentService(OpenIndexModel openIndexModel)
 {
     _openIndexModel = openIndexModel;
 }