PowerPoint 互操作:复制粘贴形状太快会崩溃

问题描述

我在 C#/.NET 程序中使用 Microsoft.Office.Interop.PowerPoint自动对 PPTX 文件执行某些操作。

我正在尝试使用以下代码在演示文稿中创建现有形状的副本:

var shape = slide.Shapes[1];
shape.copy();
var newShape = targetSlide.Shapes.Paste();

然而,Paste() 指令是不可靠的,它有时有效,但有时(显然是随机的)抛出以下异常:

错误:System.Runtime.InteropServices.COMException (0x80048240): 形状(未知成员):请求无效。剪贴板为空或 包含可能无法粘贴到此处的数据。在 Microsoft.Office.Interop.PowerPoint.Shapes.Paste()

在网上摸索了一下,发现问题是 .copy() 指令显然是异步的,基本上当它返回时,不能保证 shape 对象实际上已经被复制到剪贴板。 其实加一个

Thread.Sleep(1000);

copy()Paste() 指令之间修复了问题。

然而,睡眠并不是一个合适的解决方案,它会大大减慢程序的速度,并且无法知道您是否将睡眠时间设置得太高或太低。

我的问题是:有没有更可靠的方法可以在粘贴之前等待副本“准备好”?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)