【发布时间】: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