// 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);
        }
Пример #3
0
    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] }");
        }
    }
Пример #4
0
        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);
        }