/// <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; })); }
/// <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); }