BDInfo.runner.ScanBDROM C# (CSharp) Метод

ScanBDROM() публичный Метод

public ScanBDROM ( ) : void
Результат void
        public void ScanBDROM()
        {
            ScanResult = new ScanBDROMResult();
            ScanResult.ScanException = new Exception("Scan is still running.");

            System.Threading.Timer timer = null;
            try
            {
                this.scanState = new ScanBDROMState();
                foreach (TSStreamFile streamFile in streamFiles)
                {
                    if (BDInfoSettings.EnableSSIF &&
                        streamFile.InterleavedFile != null)
                    {
                        scanState.TotalBytes += streamFile.InterleavedFile.FileInfo.Length;
                    }
                    else
                    {
                        scanState.TotalBytes += streamFile.FileInfo.Length;
                    }

                    if (!scanState.PlaylistMap.ContainsKey(streamFile.Name))
                    {
                        scanState.PlaylistMap[streamFile.Name] = new List<TSPlaylistFile>();
                    }

                    foreach (TSPlaylistFile playlist in BDROM.PlaylistFiles.Values)
                    {
                        playlist.ClearBitrates();

                        foreach (TSStreamClip clip in playlist.StreamClips)
                        {
                            if (clip.Name == streamFile.Name)
                            {
                                if (!scanState.PlaylistMap[streamFile.Name].Contains(playlist))
                                {
                                    scanState.PlaylistMap[streamFile.Name].Add(playlist);
                                }
                            }
                        }
                    }
                }

                timer = new System.Threading.Timer(ScanBDROMProgress, scanState, 1000, 1000);
                System.Console.WriteLine("\n{0,16}{1,-15}{2,-13}{3}","", "File", "Elapsed", "Remaining");

                foreach (TSStreamFile streamFile in streamFiles)
                {
                    scanState.StreamFile = streamFile;

                    Thread thread = new Thread(ScanBDROMThread);
                    thread.Start(scanState);
                    while (thread.IsAlive)
                    {
                        Thread.Sleep(100);
                    }
                    scanState.FinishedBytes += streamFile.FileInfo.Length;
                    if (scanState.Exception != null)
                    {
                        ScanResult.FileExceptions[streamFile.Name] = scanState.Exception;
                    }
                }
                ScanResult.ScanException = null;
            }
            catch (Exception ex)
            {
                ScanResult.ScanException = ex;
            }
            finally
            {
                System.Console.WriteLine();
                if (timer != null)
                {
                    timer.Dispose();
                }
            }
        }

Usage Example

Пример #1
0
        static void Main(string[] args)
        {
            var options = new MyOptions();
            // Parse in 'strict mode', success or quit
            if(CommandLine.Parser.Default.ParseArguments(args, options))
            {
                validatePath(options.input);
                validatePath(options.output);

                runner run = new runner();
                run.InitBDROM(options.input);

                //If mpsl specified, select playlist in a different way
                if (options.playlistsToScan != null)
                {
                    try
                    {
                        System.Console.WriteLine("-m or --mpls specified, running in non-interactive mode...");
                        System.Console.Write("Atempting to find ");
                        System.Console.Write(String.Join<String>(", ", options.playlistsToScan) + Environment.NewLine);

                        run.SelectPlayList(options.playlistsToScan);
                    }
                    catch (Exception ex)
                    {
                        System.Console.WriteLine("ERROR: " + ex.Message);
                        Environment.Exit(-1);
                    }
                }
                else
                {
                    run.SelectPlayList();
                }

                run.AddStreamFilesInPlaylists();
                run.ScanBDROM();
                run.GenerateReport(options.output);
            }
        }