Esempio n. 1
0
        public static async Task EncodeImages(FileInfo[] files, IF format, int qMin, int qMax, bool deleteSource)
        {
            Program.PreProcessing();
            int maxThreads = await Config.GetInt("procThreads");

            List <Task> runningTasks = new List <Task>();
            int         done         = 0;

            foreach (FileInfo file in files)
            {
                while (runningTasks.Count >= maxThreads)
                {
                    await Task.Delay(100);

                    runningTasks = MtUtils.RemoveCompletedTasks(runningTasks, ref done);
                }

                Task newTask = Task.Run(() => EncodeImage(file, format, qMin, qMax, deleteSource));
                runningTasks.Add(newTask);

                Program.ShowProgress("", done, files.Length);
            }

            while (runningTasks.Count > 0)
            {
                Program.ShowProgress("", done, files.Length);
                runningTasks = MtUtils.RemoveCompletedTasks(runningTasks, ref done);
                await Task.Delay(500);
            }

            Program.PostProcessing(files.Length, true);
        }