0

メモリ リークを回避するために Microsoft.NET (VB) で関数を記述する最良の方法は何ですか。私はいつもこのスタイルに従っています:

Public Sub TestMemoryLeak()
        Dim testCon As SqlConnection
        Try
            testCon = New SqlConnection
        Catch

        Finally
            If testCon.State = ConnectionState.Open Then
                testCon.Close()
            End If
            testCon = Nothing
        End Try
    End Sub

ここで、接続参照は TRY 句の前に作成され、TRY 句の後に初期化されます。例外がスローされた場合でも、接続は常に閉じられ、逆参照されると思います。これは良い習慣ですか?TRY 句で参照と逆参照を作成する多くのコードを目にしますが、これは、例外がスローされた場合にメモリが正しく処理されないことを意味します。一部の開発者は、finally 句をクリーンアップするのが好きではないと言います。理由がよくわかりません。

4

1 に答える 1

6

Using次のステートメントを使用する必要があります。

Using testConn As New SqlConnection(...)
    ...
End Using

Finallyこれは、すべての状況で破棄される にコンパイルされます。

于 2012-05-08T21:04:44.367 に答える