Ejemplo n.º 1
0
        private void NonComTrain()
        {
            var obj = new NonCommunicationTrain();
            var NonComTrainThread = new Thread(obj.JudgeLostTrain);

            NonComTrainThread.IsBackground = true;
            NonComTrainThread.Start();
        }
Ejemplo n.º 2
0
        private void CancelOccupy(byte trainID, Dictionary <byte, byte[]> TrainPosition)
        {
            string  TrainHeadSection = (Convert.ToInt16(TrainPosition[trainID][1]) * 256 + Convert.ToInt16(TrainPosition[trainID][0])).ToString();
            string  RailHeadSwitch   = (Convert.ToInt16(TrainPosition[trainID][2])).ToString();
            Section section          = NonCommunicationTrain.TraverseSection(TrainHeadSection);

            if (section != null)
            {
                section.TrainOccupy.Remove(trainID);
                if (section.IsFrontLogicOccupy.Contains(trainID))
                {
                    section.IsFrontLogicOccupy.Remove(trainID);
                }
                if (section.IsLastLogicOccupy.Contains(trainID))
                {
                    section.IsLastLogicOccupy.Remove(trainID);
                }
                System.Windows.Application.Current.Dispatcher.Invoke(
                    new Action(
                        delegate
                {
                    section.InvalidateVisual();
                }));
            }
            else
            {
                RailSwitch railSwitch = NonCommunicationTrain.TraverseRailSwitch(TrainHeadSection, RailHeadSwitch);
                if (railSwitch != null)
                {
                    railSwitch.TrainOccupy.Remove(trainID);
                    System.Windows.Application.Current.Dispatcher.Invoke(new Action(delegate
                    {
                        railSwitch.InvalidateVisual();
                    }));
                }
            }


            string  TrainTailSection = (Convert.ToInt16(TrainPosition[trainID][7]) * 256 + Convert.ToInt16(TrainPosition[trainID][6])).ToString();
            string  RailTailSwitch   = (Convert.ToInt16(TrainPosition[trainID][8])).ToString();
            Section sectionTail      = NonCommunicationTrain.TraverseSection(TrainTailSection);

            if (sectionTail != null)
            {
                sectionTail.TrainOccupy.Remove(trainID);
                if (sectionTail.IsFrontLogicOccupy.Contains(trainID))
                {
                    sectionTail.IsFrontLogicOccupy.Remove(trainID);
                }
                if (sectionTail.IsLastLogicOccupy.Contains(trainID))
                {
                    sectionTail.IsLastLogicOccupy.Remove(trainID);
                }
                System.Windows.Application.Current.Dispatcher.Invoke(
                    new Action(
                        delegate
                {
                    sectionTail.InvalidateVisual();
                }));
            }
            else
            {
                RailSwitch railSwitchTail = NonCommunicationTrain.TraverseRailSwitch(TrainTailSection, RailTailSwitch);
                if (railSwitchTail != null)
                {
                    railSwitchTail.TrainOccupy.Remove(trainID);
                    System.Windows.Application.Current.Dispatcher.Invoke(new Action(delegate
                    {
                        railSwitchTail.InvalidateVisual();
                    }));
                }
            }
        }