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);
        }
Esempio n. 2
0
        public static async Task ScaleDir(float sMin, float sMax, int filterMode, string filterName)
        {
            int counter = 0;

            FileInfo[] files = IOUtils.GetFiles();
            Program.PreProcessing();

            Task forEach = Task.Run(async() => Parallel.ForEach(files, await MtUtils.GetParallelOpts(), async file => {
                await Scale(file.FullName, sMin, sMax, filterMode, filterName);
                Program.ShowProgressIncrement("", ref counter, files.Length);
            }));

            while (!forEach.IsCompleted)
            {
                await Task.Delay(1);
            }
            Program.PostProcessing(files.Length, true);
        }