private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            // Deze event handler komt in aktie als BackGroundWorker.ReportProgress wordt aangeroepen
            LabelPercentage.Visible = true;

            // De infinite loop geeft altijd percentage 0 terug
            // De infinite loop geeft een instantie van VoortgangsInformatie terug in "e"

            // De OneLoop geeft wel percentages terug.
            // De OneLoop geeft een string terug in "e"

            // We krijgen één van deze 2 mogelijkheden terug

            string text = e.UserState as string;
            VoortgangsInformatie voortgangsInformatie = e.UserState as VoortgangsInformatie;

            if (text != null) // cast via AS is gelukt
            {
                //
                text += " / " + (e.ProgressPercentage.ToString() + "%");
                this.ProgressBar.Value = e.ProgressPercentage;
                LabelPercentage.Text   = text;
                return;
            }
            ;

            if (voortgangsInformatie != null) // cast via AS is gelukt
            {
                text = voortgangsInformatie.WhoAmI + ", ben nu " + voortgangsInformatie.NrOfSecondsProcessed + " seconde bezig";
                this.ProgressBar.Value = 0;  // Geen voortgang balk bij Infinite Loop, progress staat altijd op 0 procent
                LabelPercentage.Text   = text;
                return;
            }
            ;
        }
        private void InfiniteLoop(BackgroundWorker bw)
        {
            int count     = 0;
            var startTime = DateTime.Now;

            while (!bw.CancellationPending)
            {
                Thread.Sleep(1000);
                count++;
                // ReportProgress:
                // Infinite loop kent geen percentage: geef 0 mee als percentage
                // maar geef wel mee extra gegevens via de userState
                var userState = new VoortgangsInformatie
                {
                    NrOfSecondsProcessed = (int)Math.Round((DateTime.Now.Subtract(startTime).TotalSeconds)),
                    WhoAmI = "Ik ben de oneindige loop"
                };
                // userState is een object en kan overal naar wijzen, hier wijst het naar een instantie van ProgressInformation
                bw.ReportProgress(0, userState);
            }
        }