InteropとVB.NEt4.0を使用して、ループ内に多数のパワーポイントスライドを作成していますが、奇妙なパワーポイントのクラッシュを解決するのに問題があります。
スライドの作成はほとんどの場合うまく機能しますが、Powerpointが独自の問題に遭遇し、正しく機能しなくなることがあります。ほとんどの場合、クラッシュへの応答がすぐに停止します。この障害の検出は簡単です。H_Resultを評価するだけです。ただし、より困難な障害が発生する場合もあります。Powerpointは応答を停止しますが、例外をスローしません。誰かがPowerpointのボタンを手動で押そうとするまで、動作を停止します。これにより、例外が生成されます。しかし、誰もこのボタンを押さない場合、Powerpointは無期限にフリーズしたままになります。この状態のため、私のコードは問題を評価する機会がありません。これは、夜間に大量のスライドを作成し、スライド50の後で停止する場合に特に厄介です。この問題を解決する方法を知っている人はいますか?このプログラム全体はBackgroundworkerで実行されるため、メインスレッドが毎分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