C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 130 を表示中)
■77096 / )  IDisposableの実装について
□投稿者/ 日曜プログラマー (1回)-(2015/09/10(Thu) 23:44:50)

分類:[VB.NET/VB2005 以降] 

2015/09/11(Fri) 00:08:11 編集(投稿者)
2015/09/11(Fri) 00:05:29 編集(投稿者)

いつもお世話になっております。

IDisposableの使用方法について質問です。

例えば、コンボボックスの更新時にBeginupdate・Endupdateを使用する際に
Endupdateが必ず実行されるようにTry-Finallyで実装することがあると思います。
でも、わざわざTry-Finallyを書くよりもusingで実装できたほうが楽だと考え、下記のようなサンプルクラスを作成しました。
ただIDisposableはリソースを開放するためのインターフェイスだと理解していますが、
今回のサンプルや追々実装したい内容ではリソースの開放は行いません。

これは例で、他にもDB上のデータのロック・アンロックなどDispose内でクエリを実行するようなのも実装したいと考えています。

変な質問ですが、この実装はアリですか?ナシですか?
理由やそういう結論に達する考え方も教えてほしいです。
また、他に楽に書ける方法などあればご教授いただきたいです。

よろしくお願いいたします。

'サンプルクラス
Public Class Sample
Implements IDisposable

Private _target As ComboBox
Public Sub New(ByVal target As ComboBox)
Me._target = target
End Sub

Public Sub Update()
Me._target.BeginUpdate()
End Sub

Private disposedValue As Boolean ' 重複する呼び出しを検出するには

Protected Overridable Sub Dispose(disposing As Boolean)
If Not disposedValue Then
If disposing Then
End If
If Me._target IsNot Nothing Then
Me._target.EndUpdate()
End If

End If
disposedValue = True
End Sub

Public Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
End Sub
End Class
返信 編集キー/


管理者用

- Child Tree -