コード例 #1
0
ファイル: MatrixModel.cs プロジェクト: Set4/Matrix
        /// <summary>
        /// поиск разрываемых потоков
        /// </summary>
        /// <param name="circuits">список всех циклов</param>
        /// <returns>поток-список циклов которые он разрывает</returns>
        public async Task <Dictionary <Current, List <Сircuit> > > SearchTornCurrentAsync(List <Сircuit> circuits)
        {
            Dictionary <Current, List <Сircuit> > _dict = new Dictionary <Current, List <Сircuit> >();

            List <Сircuit> list;



            return(await Task.Run(() =>
            {
                Сircuit generalСircuit = new Сircuit(new List <Current>());
                foreach (Сircuit circuit in circuits)
                {
                    foreach (Current item in circuit.CurrentList)
                    {
                        generalСircuit.AddСircuitItem(item);
                    }
                }



                StartSearchTornCurrent(this, new EventMessage("поиск разрываемых потоков начат", generalСircuit.CurrentList.Count));

                for (int i = 0; i < generalСircuit.CurrentList.Count; i++)
                {
                    StepSearchTornCurrent(this, new EventMessage("Step: " + i.ToString(), i * 100 / generalСircuit.CurrentList.Count));

                    Current item = generalСircuit.CurrentList[i];

                    list = new List <Сircuit>();
                    foreach (Сircuit circuit in circuits)
                    {
                        if (circuit.CurrentList.Where(obj => obj.StartingPoint == item.StartingPoint && obj.FinalPoint == item.FinalPoint).ToList().Count != 0)
                        {
                            list.Add(circuit);
                        }
                    }

                    _dict.Add(item, list);
                }



                EndSearchTornCurrent(this, new EventMessage("поиск разрываемых потоков завершен", _dict));
                return _dict;
            }));
        }
コード例 #2
0
        /// <summary>
        /// поиск разрываемых потоков
        /// </summary>
        /// <param name="circuits">список всех циклов</param>
        /// <returns>поток-список циклов которые он разрывает</returns>
        public Dictionary <Current, List <Сircuit> > SearchTornCurrent(List <Сircuit> circuits)
        {
            Dictionary <Current, List <Сircuit> > _dict = new Dictionary <Current, List <Сircuit> >();

            List <Сircuit> list;

            Сircuit generalСircuit = new Сircuit(new List <Current>());

            foreach (Сircuit circuit in circuits)
            {
                foreach (Current item in circuit.CurrentList)
                {
                    generalСircuit.AddСircuitItem(item);
                }
            }


            foreach (Current item in generalСircuit.CurrentList)
            {
                list = new List <Сircuit>();
                foreach (Сircuit circuit in circuits)
                {
                    if (circuit.CurrentList.Where(i => i.StartingPoint == item.StartingPoint && i.FinalPoint == item.FinalPoint).ToList().Count != 0)
                    {
                        list.Add(circuit);
                    }
                }

                _dict.Add(item, list);
            }



            СalculationСompleted(this, new EventMessage("Нахождение потоков завершено"));
            return(_dict);
        }