// Reveiced work private void GotWork(string file, string start, string end, bool lower, bool upper, bool numbers, bool symbols) { Tuple <char[], char[]> b = new Tuple <char[], char[]>(start.ToCharArray(), end.ToCharArray()); WorkParams wp = new WorkParams(); wp.file = file; wp.batch = b; wp.lower = lower; wp.upper = upper; wp.numbers = numbers; wp.symbols = symbols; doWork = new Thread(new ParameterizedThreadStart(CompleteWorkThread)); doWork.Start(wp); }
// Thread for doing the work private void CompleteWorkThread(object infoObj) { comm.SendWorkAccepted(); WorkParams p = (WorkParams)infoObj; bool passFound = false; BreakPass bp = new BreakPass(p.lower, p.upper, p.numbers, p.symbols, p.file); List <string> res = bp.CrackManagedExe(comm.threads, comm.batchSize, p.batch); foreach (string s in res) { comm.SendPassword(s); passFound = true; } comm.SendWorkCompleted(new string(p.batch.Item1), new string(p.batch.Item2), passFound); }
static void Main(string[] args) { var squares = new double[1000000]; // Launch a second thread for the odd numbers: var wp = new WorkParams(); wp.Squares = squares; wp.StartIdx = 1; wp.StepSize = 2; var t = new Thread(ThreadStart); t.Start(wp); CalculateSquareNumbers(squares, 0, 2); t.Join(); // Print the result: for (var i = 0; i < squares.Length; i++) { Console.WriteLine($"{ i } * { i } = { squares[i] }"); } }
protected override List <CustomCell> GetListViewSubItems(AircraftFlight item) { //TODO (Evgenii Babak) : Вся логика должна быть в классе Calculator var subItems = new List <CustomCell>(); var dateString = item.FlightDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); var date = item.FlightDate.Date.AddMinutes(item.OutTime); var atlb = _atbs.GetItemById(item.ATLBId); var author = GlobalObjects.CasEnvironment.GetCorrector(item); if (item.AtlbRecordType == AtlbRecordType.Flight) { var route = item.StationFromId.ShortName + " - " + item.StationToId.ShortName; var flightTimeString = UsefulMethods.TimeToString(new TimeSpan(0, 0, item.FlightTimeTotalMinutes, 0)); Color flightTimeColor; if (item.FlightTime.TotalMinutes == item.BlockTime.TotalMinutes) { flightTimeColor = Color.Black; } else { double persent = Math.Abs(1 - (item.FlightTime.TotalMinutes / item.BlockTime.TotalMinutes)) * 100; if (persent <= 3) { flightTimeColor = Color.FromArgb(Highlight.Green.Color); } else if (persent <= 10) { flightTimeColor = Color.FromArgb(Highlight.Yellow.Color); } else { flightTimeColor = Color.FromArgb(Highlight.Red.Color); } } var perDaysFlight = Lifelength.Zero; var perDaysBlock = Lifelength.Zero; var flights = _flights.Where(f => f.AtlbRecordType != AtlbRecordType.Maintenance && f.FlightDate.Date.AddMinutes(f.TakeOffTime) <= item.FlightDate.Date.AddMinutes(item.TakeOffTime)).ToList(); foreach (AircraftFlight aircraftFlight in flights) { perDaysFlight.Add(aircraftFlight.FlightTimeLifelength); perDaysBlock.Add(aircraftFlight.BlockTimeLifelenght); } subItems.Add(CreateRow(item.PageNo, item.PageNo)); subItems.Add(CreateRow(dateString, date)); subItems.Add(CreateRow(item.FlightNumber.ToString(), item.FlightNumber)); subItems.Add(CreateRow(route, route)); subItems.Add(CreateRow(flightTimeString, item.FlightTime, flightTimeColor)); #region колонки для отображения наработок по двигателям и ВСУ foreach (BaseComponent baseComponent in _enginesAndAPU.Where(i => i.BaseComponentType == BaseComponentType.Engine)) { bool shouldFillSubItems = false; var baseComponentFlightLifeLenght = Lifelength.Null; var lastKnownTransferRecBeforFlight = baseComponent.TransferRecords.GetLastKnownRecord(item.FlightDate.Date); if (lastKnownTransferRecBeforFlight != null && lastKnownTransferRecBeforFlight.DestinationObjectType == SmartCoreType.Aircraft && lastKnownTransferRecBeforFlight.DestinationObjectId == _parentAircraft.ItemId) { shouldFillSubItems = true; var flightsWhichOccuredAfterInstallationOfBd = flights.Where(f => f.AtlbRecordType != AtlbRecordType.Maintenance && f.FlightDate.Date >= lastKnownTransferRecBeforFlight.RecordDate).ToList(); var perDaysFlightForBd = Lifelength.Zero; var perDaysBlockForBd = Lifelength.Zero; foreach (var flight in flightsWhichOccuredAfterInstallationOfBd) { perDaysFlightForBd.Add(flight.FlightTimeLifelength); perDaysBlockForBd.Add(flight.BlockTimeLifelenght); } baseComponentFlightLifeLenght = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthIncludingThisFlight( baseComponent, item); } Color baseComponentTimeColor = Color.Black; if (baseComponent.BaseComponentType == BaseComponentType.Engine) { if (!last.ContainsKey(baseComponent.ItemId)) { last.Add(baseComponent.ItemId, new List <AircraftFlight>()); } if (shouldFillSubItems) { subItems.Add(CreateListViewSubItem(baseComponentTimeColor, baseComponentFlightLifeLenght)); var cp = WorkParams.FirstOrDefault(i => i.ComponentId == baseComponent.ItemId && i.GroundAir == GroundAir.Air); var cc = OilConditions.FirstOrDefault(i => i.ComponentId == baseComponent.ItemId && i.FlightId == item.ItemId); var oilFlowMin = cp?.OilFlowMin ?? 0; var oilFlowNorm = cp?.OilFlowRecomended ?? 0; var oilFlowMax = cp?.OilFlowMax ?? 0; var oilAdded = cc?.OilAdded ?? 0; var q = _flights .Where(f => f.AtlbRecordType != AtlbRecordType.Maintenance && f.FlightDate.Date.AddMinutes(f.TakeOffTime) <= item.FlightDate.Date.AddMinutes(item.TakeOffTime)) .OrderByDescending(i => i.FlightDate).ThenByDescending(i => i.TakeOffTime) .ToList(); var spent = cc?.Spent ?? 0; double consumption = 0; double consumptionMean = 0; if (oilAdded > 0) { if (last[baseComponent.ItemId].Any()) { if (last[baseComponent.ItemId].Last().ItemId != item.ItemId) { var temp = new List <AircraftFlight>(); bool flag = false; foreach (var aircraftFlight in q) { if (aircraftFlight.ItemId == last[baseComponent.ItemId].Last().ItemId) { flag = true; } if (flag) { temp.Add(aircraftFlight); } } foreach (var aircraftFlight in temp) { q.Remove(aircraftFlight); } } } var sumTime = q.Sum(i => i.FlightTime.TotalMinutes); spent = oilAdded / sumTime; consumption = spent * 60.0; if (!last[baseComponent.ItemId].Any(i => i.ItemId == item.ItemId)) { last[baseComponent.ItemId].Add(item); } } if (!_consumptionMeans.ContainsKey(baseComponent.ItemId)) { _consumptionMeans.Add(baseComponent.ItemId, new List <dynamic>()); } _consumptionMeans[baseComponent.ItemId].Add(new { UpLift = cc?.OilAdded * 60 ?? 0, FlightTime = item.FlightTime.TotalMinutes }); consumptionMean = _consumptionMeans[baseComponent.ItemId].Sum(i => (double)i.UpLift) / _consumptionMeans[baseComponent.ItemId].Sum(i => (double)i.FlightTime); subItems.Add(CreateListViewSubItem(oilAdded.ToString())); subItems.Add(CreateListViewSubItem(oilFlowMin.ToString())); subItems.Add(CreateListViewSubItem(oilFlowNorm.ToString())); subItems.Add(CreateListViewSubItem(oilFlowMax.ToString())); subItems.Add(CreateListViewSubItem(consumption.ToString("F"))); subItems.Add(CreateListViewSubItem(consumptionMean.ToString("F"))); subItems.Add(CreateListViewSubItem(GetStatus(oilFlowMin, oilFlowNorm, oilFlowMax, consumption) .ToString())); if (item.AtlbRecordType == AtlbRecordType.Flight && oilAdded > 0) { if (!_graph.Limits.ContainsKey(baseComponent)) { _graph.Limits.Add(baseComponent, new OilLimits() { Max = oilFlowMax, Min = oilFlowMin, Normal = oilFlowNorm }); } if (!_graph.Graph.ContainsKey(baseComponent)) { _graph.Graph.Add(baseComponent, new Dictionary <Lifelength, dynamic>()); } if (!_graph.Graph[baseComponent].ContainsKey(baseComponentFlightLifeLenght)) { _graph.Graph[baseComponent].Add(baseComponentFlightLifeLenght, new { Consumption = consumption, ConsumptionMean = consumptionMean }); } //else throw new Exception("Такая наработка уже есть!"); } } else { subItems.Add(CreateListViewSubItem(string.Empty)); subItems.Add(CreateListViewSubItem(string.Empty)); subItems.Add(CreateListViewSubItem(string.Empty)); subItems.Add(CreateListViewSubItem(string.Empty)); subItems.Add(CreateListViewSubItem(string.Empty)); subItems.Add(CreateListViewSubItem(string.Empty)); subItems.Add(CreateListViewSubItem(string.Empty)); } } } #endregion subItems.Add(CreateRow(atlb?.ATLBNo ?? "AtlB deleted", atlb?.ATLBNo)); subItems.Add(CreateRow(author, author)); } else { subItems.Add(CreateRow(item.PageNo, item.PageNo)); subItems.Add(CreateRow(dateString, date)); subItems.Add(CreateRow(item.FlightNumber.ToString(), item.FlightNumber)); subItems.Add(CreateRow(item.StationToId.ShortName, item.StationToId.ShortName)); subItems.Add(CreateRow("", "")); #region колонки для отображения наработок по двигателям и ВСУ foreach (var baseComponent in _enginesAndAPU) { if (baseComponent.BaseComponentType == BaseComponentType.Engine) { subItems.Add(CreateRow("", "")); subItems.Add(CreateRow("", "")); subItems.Add(CreateRow("", "")); subItems.Add(CreateRow("", "")); subItems.Add(CreateRow("", "")); subItems.Add(CreateRow("", "")); subItems.Add(CreateRow("", "")); subItems.Add(CreateRow("", "")); } } #endregion subItems.Add(CreateRow(atlb?.ATLBNo, atlb?.ATLBNo)); subItems.Add(CreateRow(author, author)); } return(subItems); }