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); }