平行的.foreach -从活动目录下载图像并将其保存到文件夹.线程安全吗?

本文关键字:保存 文件夹 线程 安全 图像 foreach 活动 下载 | 更新日期: 2023-09-27 18:03:48

我有一个方法:GetThumbnailPhotoForProfile(),我传递一个list<EmployeeInfo>,它有几个属性,如FirstName,LastName和EmailAddress。在该方法中,我使用以下代码,基于每个电子邮件地址连接到Active Directory并获取配置文件图像并将其保存到一个位置(C:'Temp:'Images)

private bool GetThumbnailPhotoForProfile(List<EmployeeInfo> EmployeeInfoList)
{
Parallel.ForEach(employeeInfoList.Select(emp=>emp.EmailAddress).ToList(),emailAddress =>
{
  var thumbnail = emailAddress.GetThumbnailPhoto();
  if (thumbnail != null)
  {
    thumbnail.Save("C:'Test'Images'" + emailAddress + ".jpg", ImageFormat.Jpeg);
  }
  else
  {
    Log.Information("Thumbnail photo is not available for the {EmailAddress}.", emailAddress);
  }  
});

}

我最初使用foreach循环,发现该方法花费更多时间,然后我更新代码使用Parallel。每一个,发现它花费更少的时间。我对它进行了多次测试,发现了同样的性能差异。在这里,我想知道上面的方法是否线程安全和有效,或者有没有更好的方法来实现它。

谁能给我指路啊

平行的.foreach -从活动目录下载图像并将其保存到文件夹.线程安全吗?

代码是否线程安全的问题不能仅根据您展示的代码来回答。这取决于GetThumbnailPhoto()Save()的作用,也可能取决于EmployeeInfoList是如何构建的。