PDFドキュメントを保存してWebBrowserコントロールに表示するVB.NETユーザーコントロールがあります。コードは次のようになります。
Using myPdfDoc As New FileStream(fileName, FileMode.Create)
Dim byt As Byte() = comLib.GetData();
If Not byt Is Nothing Then
myPdfDoc.Write(byt, 0, byt.Length)
myPdfDoc.Flush()
myPdfDoc.Close()
webBrowserCtl.Navigate(fileName)
End If
End Using
comLibは、関連データを取得するVB6で記述されたCOM相互運用ライブラリです。
私の知る限り、このコードはPDFドキュメントへの参照を保持しています(プログラムの終了時にVB.NETは閉じないため)。この記事は、adobeがそれ自体の後で適切にクリーンアップされないことを示唆しているように見えますが、提案された変更を実装しても役に立たないようです。
なぜ私はこの振る舞いをするのでしょうか?VB6では、プログラムが正しく閉じられなかったのは、常に、クリアされていない漂遊オブジェクト参照の結果でした。これはVB.NETでも当てはまりますか?もしそうなら、どのオブジェクトを識別するために何ができますか、またはなぜこれが起こっている可能性がありますか?