Example #1
0
        void CalcPi(object rawdigits, DoWorkEventArgs args)
        {
            int           digits = (int)args.Argument;
            StringBuilder pi     = new StringBuilder("3", digits + 2);

            // Show progress
            //ShowProgress(pi.ToString(), digits, 0);
            bw.ReportProgress(0, pi);

            if (digits > 0)
            {
                pi.Append(".");

                for (int i = 0; i < digits; i += 9)
                {
                    int    nineDigits = NineDigitsOfPi.StartingAt(i + 1);
                    int    digitCount = Math.Min(digits - i, 9);
                    string ds         = string.Format("{0:D9}", nineDigits);
                    pi.Append(ds.Substring(0, digitCount));

                    // Show progress
                    //ShowProgress(pi.ToString(), digits, i + digitCount);
                    double progress = ((double)(i + digitCount) / digits) * 100;
                    bw.ReportProgress((int)progress, pi);
                }
            }
        }
Example #2
0
        void CalcPi(object sender, DoWorkEventArgs e)
        {
            // Get the BackgroundWorker that raised this event.
            BackgroundWorker worker = sender as BackgroundWorker;

            // Retrieve argument
            int digits = (int)e.Argument;

            StringBuilder pi = new StringBuilder("3", digits + 2);

            worker.ReportProgress(0, pi);

            if (digits > 0)
            {
                pi.Append(".");

                for (int i = 0; i < digits; i += 9)
                {
                    int    nineDigits = NineDigitsOfPi.StartingAt(i + 1);
                    int    digitCount = Math.Min(digits - i, 9);
                    string ds         = string.Format("{0:D9}", nineDigits);
                    pi.Append(ds.Substring(0, digitCount));

                    // Show progress
                    worker.ReportProgress((i * 100) / digits, pi);
                    if (worker.CancellationPending)
                    {
                        break;
                    }
                }
                e.Result = pi;
            }
        }
Example #3
0
        void CalcPi(object rawdigits)
        {
            int digits = (int)rawdigits;

            StringBuilder pi = new StringBuilder("3", digits + 2);

            // Show progress
            ShowProgress(pi.ToString(), digits, 0);

            if (digits > 0)
            {
                pi.Append(".");

                for (int i = 0; i < digits; i += 9)
                {
                    int    nineDigits = NineDigitsOfPi.StartingAt(i + 1);
                    int    digitCount = Math.Min(digits - i, 9);
                    string ds         = string.Format("{0:D9}", nineDigits);
                    pi.Append(ds.Substring(0, digitCount));

                    // Show progress
                    ShowProgress(pi.ToString(), digits, i + digitCount);
                }
            }
        }
        private void BackgroundWorker_OnDoWork(object sender, DoWorkEventArgs e)
        {
            //Debug.WriteLine(input.Digits);

            StringBuilder pi = new StringBuilder("3", digits + 2);

            if (digits > 0)
            {
                pi.Append(".");

                for (int i = 0; i < digits; i += 9)
                {
                    int    nineDigits = NineDigitsOfPi.StartingAt(i + 1);
                    int    digitCount = Math.Min(digits - i, 9);
                    string ds         = $"{nineDigits:D9}";
                    pi.Append(ds.Substring(0, digitCount));

                    backgroundWorker.ReportProgress((i * 100) / digits, pi);
                    if (backgroundWorker.CancellationPending)
                    {
                        break;
                    }
                }
            }

            if (backgroundWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }
        }
Example #5
0
        void CalcPi(int digits)
        {
            StringBuilder pi = new StringBuilder("3", digits + 2);

            // Show progress
            ShowProgress(pi.ToString(), digits, 0);

            if (digits > 0)
            {
                pi.Append(".");
                startTime = DateTime.Now;

                for (int i = 0; i < digits; i += 9)
                {
                    int    nineDigits = NineDigitsOfPi.StartingAt(i + 1);
                    int    digitCount = Math.Min(digits - i, 9);
                    string ds         = string.Format("{0:D9}", nineDigits);
                    pi.Append(ds.Substring(0, digitCount));

                    // Show progress
                    ShowProgress(pi.ToString(), digits, i + digitCount);
                }
                endTime = DateTime.Now;
                TimeSpan calcTime = endTime - startTime;
                tblCalcTime.Text = calcTime.ToString();
            }
        }
Example #6
0
        private void BackgroundCalcPi()
        {
            StringBuilder pi = new StringBuilder("3,", digits + 2);
            string        ds;

            // Show progress
            // ShowProgress(pi.ToString(), digits, 0);
            evUpdate(this, new PiUpdateEventArgs(pi.ToString(), digits, 0));

            if (digits > 0)
            {
                pi.Append(".");

                for (int i = 0; i < digits; i += 9)
                {
                    int nineDigits = NineDigitsOfPi.StartingAt(i + 1);
                    int digitCount = Math.Min(digits - i, 9);
                    ds = string.Format("{0:D9}", nineDigits);
                    pi.Append(ds.Substring(0, digitCount));

                    // Show progress
                    //ShowProgress(pi.ToString(), digits, i + digitCount);
                    evUpdate(this, new PiUpdateEventArgs(ds, digits, i + digitCount));
                }
            }
            result = pi.ToString();
            evCompleted(this, new EventArgs());
        }
Example #7
0
        void CalcPi(int digits)
        {
            StringBuilder    pi     = new StringBuilder("3", digits + 2);
            object           sender = System.Threading.Thread.CurrentThread;
            ShowProgressArgs e      = new ShowProgressArgs(pi.ToString(), digits, 0);

            // Show progress
            ShowProgress(sender, e);

            if (digits > 0)
            {
                pi.Append(".");

                for (int i = 0; i < digits; i += 9)
                {
                    int    nineDigits = NineDigitsOfPi.StartingAt(i + 1);
                    int    digitCount = Math.Min(digits - i, 9);
                    string ds         = string.Format("{0:D9}", nineDigits);
                    pi.Append(ds.Substring(0, digitCount));

                    // Show progress
                    e.Pi          = pi.ToString();
                    e.DigitsSoFar = i + digitCount;
                    ShowProgress(sender, e);
                    if (e.Cancel)
                    {
                        break;
                    }
                }
            }
        }
Example #8
0
        private void BackgroundCalcPi()
        {
            for (int i = startDec; i < endDec; i += 9)
            {
                int    nineDigits = NineDigitsOfPi.StartingAt(i + 1);
                int    digitCount = Math.Min(endDec - i, 9);
                string ds         = string.Format("{0:D9}", nineDigits);
                pi.Append(ds.Substring(0, digitCount));

                // Don't Show progress
                // ShowProgress(pi.ToString(), digits, i + digitCount);
            }
            result      = pi.ToString();
            IsCompleted = true;
            if (evCompleted != null)
            {
                evCompleted(this, new CalcPiEventArgs(index, result));
            }
        }
Example #9
0
        void CalcPi(int digits)
        {
            StringBuilder pi = new StringBuilder("3", digits + 2);

            // Show progress
            ShowProgress(pi.ToString(), digits, 0);

            if (digits > 0)
            {
                pi.Append(".");

                Parallel.For(0, digits / 9, i =>
                {
                    int nineDigits = NineDigitsOfPi.StartingAt(i * 9 + 1);
                    int digitCount = Math.Min(digits - i * 9, 9);
                    string ds      = string.Format("{0:D9}", nineDigits);
                    pi.Append(ds.Substring(0, digitCount));

                    // Show progress
                    ShowProgress(pi.ToString(), digits, i * 9 + digitCount);
                });
            }
        }
Example #10
0
        private void BackgroundCalcPi()
        {
            startTime = DateTime.Now;

            StringBuilder pi      = new StringBuilder("3", digits + 2);
            int           numCalc = (digits + 8) / 9;

            string[] results = new string[numCalc];

            // Show progress
            evUpdate(this, new PiUpdateEventArgs(pi.ToString(), digits, 0));

            if (digits > 0)
            {
                pi.Append(".");

                Parallel.For(0, numCalc, i =>
                {
                    int nineDigits = NineDigitsOfPi.StartingAt(1 + i * 9);
                    int digitCount = Math.Min(digits - i * 9, 9);
                    string ds      = string.Format("{0:D9}", nineDigits);
                    results[i]     = ds.Substring(0, digitCount);
                });

                for (int i = 0; i < numCalc; i++)
                {
                    pi.Append(results[i]);
                }

                endTime = DateTime.Now;

                result = pi.ToString();
            }

            calcTime = endTime - startTime;
            evCompleted(this, new EventArgs());
        }