其他分享
首页 > 其他分享> > 并行的每个循环不会保存所有文件

并行的每个循环不会保存所有文件

作者:互联网

我在图像转换器上书写.当我为每个并行使用时,不会保存所有图像.处理速度太快,无法在磁盘上写入文件吗?

这是我的代码:

private void convert()
{
    Parallel.ForEach(source.GetFiles("*.tif"), 
         new ParallelOptions() { MaxDegreeOfParallelism = Environment.ProcessorCount }, 
         file =>
         {                  
            fileName = file.Name;
            MagickImage image = new MagickImage(sourceFolderPath + "\\" + file);
            image.ColorSpace = ColorSpace.XYZ;
            image.GammaCorrect(2.4);
            image.Write(destinationFolderPath + "\\" + fileName);
         });
}

我做错了什么?

解决方法:

尝试处理图像:

private void convert()
{
    Parallel.ForEach(source.GetFiles("*.tif"), 
         new ParallelOptions() { MaxDegreeOfParallelism = Environment.ProcessorCount }, 
         file =>
         {                  
            fileName = file.Name;
            using (MagickImage image = new MagickImage(sourceFolderPath + "\\" + file))
            {
                image.ColorSpace = ColorSpace.XYZ;
                image.GammaCorrect(2.4);
                image.Write(destinationFolderPath + "\\" + fileName);
            }
         });
}

标签:parallel-processing,parallel-foreach-2,c
来源: https://codeday.me/bug/20191110/2015127.html