作成日: 2018/12/10 最終更新日: 2019/04/17
文書種別
不具合
状況
修正済み
詳細
■事象
コントロールスキンを設定したSPREADを配置したオブジェクト(例:フォーム、ユーザーコントロール)について、メモリリークが発生する場合があります。
■再現手順
1.フォーム(Form1)上にSPREADを配置し、任意のコントロールスキンを設定します。
2.Form1のShownイベント内で「Me.Close()」を実行します。
3.以下のようなコードでForm1を繰り返し実行します。
コントロールスキンを設定したSPREADを配置したオブジェクト(例:フォーム、ユーザーコントロール)について、メモリリークが発生する場合があります。
■再現手順
1.フォーム(Form1)上にSPREADを配置し、任意のコントロールスキンを設定します。
2.Form1のShownイベント内で「Me.Close()」を実行します。
3.以下のようなコードでForm1を繰り返し実行します。
Dim frm As Form1 = Nothing
For i As Integer = 1 To 100
frm = New Form1()
frm.ShowDialog()
Next
For i As Integer = 1 To 100
frm = New Form1()
frm.ShowDialog()
Next
回避方法
Service Pack 4(v10.0.4008.2012)で修正済み。
Service Packを適用せずに対処する方法としては、SPREADを配置したオブジェクトを明示的に破棄する方法が有効です。たとえば、以下のようなコードになります。
■サンプルコード(VB.NET)
または、以下のようにUsing~End Usingブロックを使用する方法も有効です。
■サンプルコード(VB.NET)
Service Packを適用せずに対処する方法としては、SPREADを配置したオブジェクトを明示的に破棄する方法が有効です。たとえば、以下のようなコードになります。
■サンプルコード(VB.NET)
Dim frm As Form1 = Nothing
For i As Integer = 1 To 100
frm = New Form1()
frm.ShowDialog()
'【回避策】 明示的にオブジェクトを破棄します。
frm.Dispose()
Next
For i As Integer = 1 To 100
frm = New Form1()
frm.ShowDialog()
'【回避策】 明示的にオブジェクトを破棄します。
frm.Dispose()
Next
または、以下のようにUsing~End Usingブロックを使用する方法も有効です。
■サンプルコード(VB.NET)
For i As Integer = 1 To 100
Using frm As New Form1()
frm.ShowDialog()
End Using
Next
Using frm As New Form1()
frm.ShowDialog()
End Using
Next
旧文書番号
83453