Пример #1
0
        private Color AddSeries(ThreadWrapper p_threadWrapper)
        {
            this.chart1.Series.SuspendUpdates();
            var colorIndex = this.chart1.Series.Count;

            if (colorIndex >= chartColors.Length)
            {
                colorIndex = 0;
            }

            var   originalColor = chartColors[colorIndex];
            Color seriesColor   = Color.FromArgb(132, originalColor.R, originalColor.G, originalColor.B);

            var newSeries = new Series
            {
                BorderColor     = Color.White,
                BorderDashStyle = ChartDashStyle.Solid,
                ChartArea       = chart1.ChartAreas[0].Name,
                ChartType       = SeriesChartType.FastLine,
                Color           = seriesColor,
                LabelBackColor  = Color.Maroon,
                LabelForeColor  = Color.Lime,
                Legend          = "Legend1",
                Name            = "Thread +" + p_threadWrapper.ThreadId,
                Tag             = p_threadWrapper
            };

            this.chart1.Series.Add(newSeries);

            chart1.ChartAreas.SuspendUpdates();

            var    times        = (double[])ThreadsManager.Times.Clone();
            double previousTime = 0.0;

            for (int index = 0; index < p_threadWrapper.Speeds.Length; index++)
            {
                var value = p_threadWrapper.Speeds[index];
                var time  = (double)times[index];
                if (previousTime > time)
                {
                    time = previousTime;
                }

                var dataPointIndex = newSeries.Points.AddXY(time, value);
                previousTime = time;
            }

            chart1.ChartAreas.ResumeUpdates();
            return(seriesColor);
        }
        public static ThreadWrapper[] AddThreads(int p_count)
        {
            var result = new ThreadWrapper[p_count];

            for (int i = 0; i < p_count; i++)
            {
                var newThreadWrapper = new ThreadWrapper();
                result[i] = newThreadWrapper;
#pragma warning disable 420
                //                       M
                //                      dM
                //                      MMr
                //                     4MMML                  .
                //                     MMMMM.                xf
                //     .              "MMMMM               .MM-
                //      Mh..          +MMMMMM            .MMMM
                //      .MMM.         .MMMMML.          MMMMMh
                //       )MMMh.        MMMMMM         MMMMMMM
                //        3MMMMx.     'MMMMMMf      xnMMMMMM"
                //        '*MMMMM      MMMMMM.     nMMMMMMP"
                //          *MMMMMx    "MMMMM\    .MMMMMMM=
                //           *MMMMMh   "MMMMM"   JMMMMMMP
                //             MMMMMM   3MMMM.  dMMMMMM            .
                //              MMMMMM  "MMMM  .MMMMM(        .nnMP"
                //  =..          *MMMMx  MMM"  dMMMM"    .nnMMMMM*
                //    "MMn...     'MMMMr 'MM   MMM"   .nMMMMMMM*"
                //     "4MMMMnn..   *MMM  MM  MMP"  .dMMMMMMM""
                //       ^MMMMMMMMx.  *ML "M .M*  .MMMMMM**"
                //          *PMMMMMMhn. *x > M  .MMMM**""
                //             ""**MMMMhx/.h/ .=*"
                //                      .3P"%....
                //                    nP"     "*MMnx
                while (0 != Interlocked.CompareExchange(ref m_threadCollectionBusy, 1, 0))
                {
                    Thread.SpinWait(100);
                }
#pragma warning restore 420
                m_threadWrappers.Add(newThreadWrapper);
                m_threadCollectionBusy = 0;
            }
            return(result);
        }