タイトル | : Re^2: 【解決】Re^3: レイトバインドするとExcelのFindNextオブジェクトが開放できなくなります |
記事No | : 10186 |
投稿日 | : 2010/07/15(Thu) 08:10 |
投稿者 | : camputer |
> 何のエラーか書かれていませんが、どのような物ですか? 魔界の仮面弁士様 おはようございます!!夜遅い時間にも関わらずコメントいただき どうもありがとうございます。お返事が遅くなり申し訳ございませんm(_ _)m 今確認できる状況でございますゆえ、調査してまいります。 しばしお待ちくださいませ。。。
#==【追記】====================================================
調べてまいりました。ご推察なさられたとおり、 myRng = Nothingの時のエラーで間違いなさそうでございます。 【エラー表示内容】 ArgumentNullExceptionはハンドルされませんでした。 値を Null にすることはできません。 パラメータ名: o になります。 MRComObjectにつきましては、以下になります。最後にobjCom = Nothingしております。 (この行につきましては殆ど意味が無いのかな?などと考えながらも 必ずしも無意味では無さそうなので入れてみました。)
Public Shared Sub MRComObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = False) If objCom Is Nothing Then Return Try If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then If force Then System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom) Else Dim count As Integer = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom) 'MsgBox(count) 'Debug.WriteLine(count) End If End If Finally objCom = Nothing End Try End Sub
If force Then 時にFinal〜しておりますが、今回の現象においては上記コードではCom〜が一回も解放できませんでした。 前コメント記載コードのように、毎回Final〜すると現時点で100%解放できております。
昨日アドバイスいただけてから、すべてのComオブジェクト解放時に「毎回」 FinalReleaseComObjectを使用してしまう、という事はNGなのかな???などと考えております。 毎回、「完璧に」解放してから次に進むべきではないのかな??などと思う次第なのでございますが。。。 例えばMRComObjectを次のようにしてしまうとか(?)。。。
Public Shared Sub MRComObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = False) If objCom Is Nothing Then Return Try If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom) End If Finally objCom = Nothing End Try End Sub
もしくは
Public Shared Sub MRComObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = False) If objCom Is Nothing Then Return Try If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then Do i = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom) Loop Until i <= 0 End If Finally objCom = Nothing End Try End Sub
自分でもう少し勉強して参ります^^ この度は誠にありがとうございました!!!m(_ _)m
|