【问题标题】:PieChart.SaveImage(path,imageFormate) show exception on saving image 2nd time饼图.保存图像(路径,图像格式)在第二次保存图像时显示异常
【发布时间】:2016-08-15 20:13:41
【问题描述】:

我在 Windows 窗体应用程序中使用 .NET 4.0 框架的图表控件我一直在通过PieChart.SaveImage(Path,ChartImageFormat.Png) 将饼图图像保存在位置上,当我使用Microsoft.Office.Interop.Word 创建 doc 文件时,我将其粘贴该文档中的图像。它第一次进行得很好,.doc 创建成功,但我尝试在 win 表单期间第二次保存饼图运行它会给出 System.IO.Exception

"进程无法访问文件'path',因为它正被 另一个进程。”

当我终止程序并在之前的图像上再次运行它时,但是当我想在程序运行期间第二次保存图像时,它会给出相同的异常

这就是我保存图像的方式

private Void SavePieChart()
{
    string PieChartPath= Application.StartupPath + @"\Chart.png";
    PieChart.SaveImage(PieChartPath, ChartImageFormat.Png);
}

我进行了搜索,但没有找到任何有效的解决方案来解决我的问题, 如果有什么做错请指出我的错误,或任何帮助链接来解决这个问题。 .

编辑 1

这是我在 Doc 文件中粘贴该图像的位置

System.Drawing.Image PieChart =System.Drawing.Image.FromFile(PieChartPath);
oHeader1 = oDoc.Content.Paragraphs.Add(ref oMissing);
Logothread = new Thread(() => Clipboard.SetImage(PieChart));
Logothread.SetApartmentState(ApartmentState.STA); //Set the thread to STA
Logothread.Start();
Logothread.Join();
oHeader1.Range.Paste();
oHeader1.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
oHeader1.Range.InsertParagraphAfter();

提前致谢

【问题讨论】:

  • 保存两次应该没有问题。你也用c#打开它吗?如果不怀疑这个词仍然在图像上?在第二次保存之前关闭单词是否有效?不粘贴到word中可以吗?
  • 尝试给所有保存的 png 文件一个唯一的名称。
  • @TaW:我首先保存图像,然后将其粘贴到 Doc 文件中,在创建结束时我关闭文档并退出应用程序,它工作正常。当它尝试在一段时间后第二次创建 doc 文件时,它显示异常
  • @LoekD: 可以,但它会填满硬盘中的内存,这就是我不这样做的原因......
  • Image.FromFile 保持文件在使用中。您可以改用Image.FromStream

标签: c# winforms office-interop mschart


【解决方案1】:

问题是当我将图像粘贴到 doc 文件中时,我像拍摄图像一样

System.Drawing.Image PieChart =System.Drawing.Image.FromFile(PieChartPath);

正如 Reza 和 Taw 所描述的那样,FromFile() 保持文件在使用中,这就是为什么当我第二次尝试保存图像时它显示异常文件已经在处理中,

我使用 FromStram() 将其添加到我的代码中

byte[] DataBytes= System.IO.File.ReadAllBytes(PieChartPath);
System.IO.MemoryStream ms = new System.IO.MemoryStream(DataBytes);

System.Drawing.Image PieChart = System.Drawing.Image.FromStream(ms);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多