投稿者 MMTRS  (社会人) 投稿日時 2010/6/25 09:36:03
よねKENさんありがとうございます。

>ガベージコレクターが動作し、このインスタンスが回収された場合、
>回収作業の中で、Disposeメソッドが呼び出され、SqlDataReaderインスタンスはクローズされます。
これについてですが、先のコードを一部変更して、

    Private Sub TextBox1_Validating(ByVal sender As ObjectByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating

        Call GetData1()     'Closeなし 
        Call Dummy()
        Call GetData2()     'Closeあり 

    End Sub

    Private Sub Dummy()
        Dim dmAry() As String
        Dim i As Integer

        For i = 0 To 9999   '←適当な値 
            ReDim Preserve dmAry(i)
            dmAry(i) = i.ToString()
        Next

    End Sub



として、無駄にメモリを使用するようなDummyメソッドを追加してみたところ、
Dummyメソッドの有無によって、GetData2で例外が発生したりしなかったりという状況になりました。

これはつまり、Dummyメソッドでメモリを多く使用することで、GetData1のdrに対して
ガベージコレクターが動作したということになるのでしょうか。