BDInfo.runner.ScanBDROMProgress C# (CSharp) Method

ScanBDROMProgress() private method

private ScanBDROMProgress ( object state ) : void
state object
return void
        private void ScanBDROMProgress(object state)
        {
            ScanBDROMState currentScanState = (ScanBDROMState)state;
            try
            {
                long finishedBytes = currentScanState.FinishedBytes;
                if (currentScanState.StreamFile != null)
                {
                    finishedBytes += currentScanState.StreamFile.Size;
                }

                double progress = ((double)finishedBytes / currentScanState.TotalBytes);
                int progressValue = (int)Math.Round(progress * 100);
                if (progressValue < 0) progressValue = 0;
                if (progressValue > 100) progressValue = 100;

                TimeSpan elapsedTime = DateTime.Now.Subtract(currentScanState.TimeStarted);
                TimeSpan remainingTime;
                if (progress > 0 && progress < 1)
                {
                    remainingTime = new TimeSpan(
                        (long)((double)elapsedTime.Ticks / progress) - elapsedTime.Ticks);
                }
                else
                {
                    remainingTime = new TimeSpan(0);
                }

                String elapsedTimeString = string.Format(
                    "{0:D2}:{1:D2}:{2:D2}",
                    elapsedTime.Hours,
                    elapsedTime.Minutes,
                    elapsedTime.Seconds);

                String remainingTimeString = string.Format(
                    "{0:D2}:{1:D2}:{2:D2}",
                    remainingTime.Hours,
                    remainingTime.Minutes,
                    remainingTime.Seconds);

                if (currentScanState.StreamFile != null)
                {
                    System.Console.Write("Scanning {0,3:d}% - {1,10} {2,12}  |  {3}\r", progressValue, currentScanState.StreamFile.DisplayName, elapsedTimeString, remainingTimeString);
                }
                else
                {
                    System.Console.Write("Scanning {0,3}% - \t{2,10}  |  {3}...\r", currentScanState.StreamFile.DisplayName);

                }

            }
            catch { }
        }