示例#1
0
        /// <summary>
        /// Adds continuations to analysis tasks so that the view model's properties are updated when
        /// each task has results available for display.
        /// </summary>
        /// <param name="tasks">The task record</param>
        void AddButtonContinuations(AnalysisTasks tasks)
        {
            AddButtonContinuation(tasks.LoadNyseData,
                                  t => { NyseMarketData = t.Result; });

            AddButtonContinuation(tasks.LoadNasdaqData,
                                  t => { NasdaqMarketData = t.Result; });

            AddButtonContinuation(tasks.LoadFedHistoricalData,
                                  t => { FedHistoricalData = t.Result; });

            AddButtonContinuation(tasks.MergeMarketData,
                                  t => { MergedMarketData = t.Result; });

            AddButtonContinuation(tasks.NormalizeHistoricalData,
                                  t => { NormalizedHistoricalData = t.Result; });

            AddButtonContinuation(tasks.NormalizeMarketData,
                                  t => { NormalizedMarketData = t.Result; });

            AddButtonContinuation(tasks.AnalyzeHistoricalData,
                                  t => { AnalyzedHistoricalData = t.Result; });

            AddButtonContinuation(tasks.AnalyzeMarketData,
                                  t => { AnalyzedStockData = t.Result; });

            AddButtonContinuation(tasks.ModelHistoricalData,
                                  t => { ModeledHistoricalData = t.Result; });

            AddButtonContinuation(tasks.ModelMarketData,
                                  t => { ModeledMarketData = t.Result; });

            AddButtonContinuation(tasks.CompareModels,
                                  t =>
            {
                this.Recommendation    = t.Result;
                this.StatusTextBoxText =
                    (this.Recommendation == null)
                            ? "Canceled"
                            : this.Recommendation.Value;
                this.ModelState = State.Ready;
            });

            tasks.ErrorHandler.ContinueWith(
                t =>
            {
                if (t.Status == TaskStatus.Faulted)
                {
                    this.StatusTextBoxText = "Error";
                }
                this.ModelState = State.Ready;
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }
示例#2
0
        void OnRequestCalculate()
        {
            // Initialize the result properties to null
            ResetResultProperties();

            // Place the view model into calculation mode
            ModelState = State.Calculating;

            // Update the property containing the status text
            StatusTextBoxText = "...calculating...";

            // Start the analysis
            AnalysisTasks tasks = engine.DoAnalysisParallel();

            // Add continuations so that view model properties are updated when each subtask completes
            AddButtonContinuations(tasks);
        }