private void BuildSubstationGraph()
        {
            if (SelectedSubstation == null)
            {
                return;
            }

            Model.Substation selectedPst = SelectedSubstation;

            SelectedFider = null;

            MainWindow.Cursor = Cursors.Wait;
            State             = StateType.Building;

            ThreadStart threadStart = delegate()
            {
                try
                {
                    TMP.DWRES.Graph.FiderGraph substationGraph = GetSubstationGraph(selectedPst);
                    ModelGraph = substationGraph;
                }
                finally
                {
                    System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
                    {
                        // получаем участки
                        LinesWithNames = Lines;

                        // сохраняем список тп
                        BuildTPList();

                        MainWindow.Cursor = Cursors.Arrow;
                        State             = StateType.Ready;

                        _currentGraphVariant = GraphVariant.Substation;
                    }));
                }
            };

            Thread thread = new Thread(threadStart);

            thread.Name     = "Build substation graph";
            thread.Priority = ThreadPriority.BelowNormal;
            thread.Start();
        }
        private void BuildFiderGraph()
        {
            if (SelectedFider == null)
            {
                return;
            }

            State             = StateType.Building;
            MainWindow.Cursor = Cursors.Wait;

            ThreadStart threadStart = delegate()
            {
                try
                {
                    TMP.DWRES.Graph.FiderGraph graph = GetFiderGraph(SelectedFider);
                    ModelGraph = graph;
                }
                finally
                {
                    System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
                    {
                        // получаем участки
                        Lines          = _dwh.GetLines(SelectedFider.ID);
                        LinesWithNames = _graphScheme.Lines;

                        // сохраняем список тп
                        BuildTPList();

                        MainWindow.Cursor    = Cursors.Arrow;
                        State                = StateType.Ready;
                        _currentGraphVariant = GraphVariant.Fider;
                    }));
                }
            };

            Thread thread = new Thread(threadStart);

            thread.Name     = "Build fider graph";
            thread.Priority = ThreadPriority.BelowNormal;
            thread.Start();
        }
        private static void OnGraphChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            FiderGraph g = (FiderGraph)e.NewValue;

            ((GraphLayout)d).fiderGraphLayout.Graph = g;
        }