В своем консольном приложении я создаю диаграмму с помощью класса System.Windows.Forms.DataVisualization.Charting.Chart.Я могу создать диаграмму из моих данных и сохранить изображение с помощью этого вызова:
chart.SaveImage(chartImagePath, ChartImageFormat.Png);
Большинство онлайн-уроков посвящено сохранению изображения, которое я выполнил.Проблема возникает, когда я пытаюсь использовать это изображение, которое было только что создано.Я хочу сохранить его в списке вложений, поэтому я вызываю эту функцию:
internal static Attachment GetAttachment(string chartImagePath, string contentName)
{
var attachment = new Attachment(chartImagePath);
attachment.ContentDisposition.Inline = true;
attachment.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
attachment.ContentId = contentName;
attachment.ContentType.MediaType = "image/png";
attachment.ContentType.Name = Path.GetFileName(chartImagePath);
return attachment;
}
Сбой вызова этой функции с IOException: процесс не может получить доступ к файлу «имя файла», поскольку он используетсядругой процесс.
Я попробовал пару вещей: (1) проверка File.Exists (chartImagePath) перед продолжением, но это не помогает, потому что файл существует сразу после создания, но процессеще не выпустили его (2) с использованием шаблона повторения, чтобы проглотить исключения, 3 повторных попыток было недостаточно.
Я не могу найти какую-либо документацию о том, когда завершение chart.SaveImage или если есть функция, которую я могу вызвать асинхроннопосле этого вызов завершается.Как я могу исправить эту проблему?