我在循环中创建了很多Powerpoint幻灯片,使用Interop和VB.NEt 4.0,我无法解决奇怪的powerpoint崩溃问题。
幻灯片的创建在大多数情况下运行良好,但有时Powerpoint遇到了自己的问题并停止正常工作。 大多数时候它只是立即停止响应oder崩溃。检测此故障很简单,只需评估H_Result即可。但有时会出现更具挑战性的失败:Powerpoint停止响应但不会抛出异常。它只是停止工作,直到某人手动尝试按下Powerpoint中的按钮,这将产生异常。 但如果没有人按下此按钮,Powerpoint将无限期地保持冻结状态。由于这种情况,我的代码永远不会有机会评估问题。如果您想在晚上创建大量幻灯片并且在幻灯片50之后停止,这尤其令人讨厌。是否有人知道如何解决此问题。整个程序在背景工作者中运行 - 所以也许我的主线程可以每分钟左右询问bgw“你还活着吗?”但是如何实现这一点。
下面是一个简单的Backgroundworkercode概要。
基本上,它看起来像这样:
Dim SlideNumber as Integer =0
Dim PowerpointHasCrashed as Boolean
Dim Slide as pptns.Slide
do while SlideNumber<ListOfSlidesTobeCreated.Count-1 and PowerpointHasCrashed =False
try
DoStuffWithSlide(ListOfSlidesTobeCreated(SlideNumber))
catch ex as exception
If ex.message like PowerPointFailue then
PowerpointHasCrashed =True
End If
end try
SlideNumber +=1
end while
If PowerpointHasCrashed =true then
SlideNumber -=1
'Do some Stuff to repair the Damage and start the loop again.
End If
答案 0 :(得分:0)
经过一番努力,我只是使用Backgroundworker.Reportsprogress子来设置一个datetime变量。 每3分钟一个计时器检查这个变量,如果这个变量超过5分钟,Powerpoint将被杀死并重新启动。 因为每个完成的幻灯片都会导致报告进度增加,所以效果非常好。