作成日: 2019/08/15 最終更新日: 2021/02/26
文書種別
不具合
状況
修正済み
詳細
別スレッドでSPREADを配置したFormのインスタンスを生成すると、FormをDisposeする際に例外(NullReferenceException)が発生します。
【再現手順】
1.新規作成したプロジェクトのFormにButtonを配置します。
2.Form2を追加しFpSpreadを配置します。
3.Form1.vbに下記のサンプルコードを記述しプロジェクトをデバッグ実行します。
4.Form1のButton1をクリックします。
■サンプルコード(VB.NET)
【再現手順】
1.新規作成したプロジェクトのFormにButtonを配置します。
2.Form2を追加しFpSpreadを配置します。
3.Form1.vbに下記のサンプルコードを記述しプロジェクトをデバッグ実行します。
4.Form1のButton1をクリックします。
■サンプルコード(VB.NET)
Private frm As Form2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim threadDetails = New Threading.Thread(New Threading.ThreadStart(AddressOf CreateFrmInstance))
threadDetails.IsBackground = True
threadDetails.Start()
threadDetails.Join()
threadDetails = Nothing
frm.ShowDialog()
frm.Dispose()
End Sub
Private Sub CreateFrmInstance()
If IsNothing(frm) OrElse frm.IsDisposed Then
frm = New Form2()
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim threadDetails = New Threading.Thread(New Threading.ThreadStart(AddressOf CreateFrmInstance))
threadDetails.IsBackground = True
threadDetails.Start()
threadDetails.Join()
threadDetails = Nothing
frm.ShowDialog()
frm.Dispose()
End Sub
Private Sub CreateFrmInstance()
If IsNothing(frm) OrElse frm.IsDisposed Then
frm = New Form2()
End If
End Sub
回避方法
Service Pack 5(v10.0.4009.2012)で修正済み。
Service Packを適用せずに対処する方法としては、DisposeメソッドではなくFormオブジェクトにNothingを設定することで回避が可能です。
Service Packを適用せずに対処する方法としては、DisposeメソッドではなくFormオブジェクトにNothingを設定することで回避が可能です。
旧文書番号
84372