こんにちは。VB2013で社内の業務用ツールを作成しています。現在作成中の社内ツールでは、アプリ内部で呼び出すサブツール用のデータをPath.GetTempPathで得られる一時フォルダ内に作成し、サブツールの作業が終わったら一時フォルダ内のデータを削除しています。(実際にはPath.GetTempFileNameを使用)この一時ファイル作成管理を汎用的に使いたいと思い、一時ファイル作成管理機能をクラス化したいと思いました。色々と調べた所、IDisposableインタフェースというものを実装するとDispose()で一時ファイルを削除したり、Usingが使えたりするのでこれを使ってみようと思いました。VSで、クラス名の所に「Implements IDisposable」を記述すると、実装すべきコードが自動的に生成されましたが、・マネージ オブジェクト・アンマネージ リソース (アンマネージ オブジェクト) のキーワードがイマイチ理解できていません。ここでいう、「マネージ オブジェクト」とは何でしょうか?例えばBitmapのような、.Netが用意したオブジェクトでしょうか?また、「アンマネージ リソース (アンマネージ オブジェクト)」が何を指すか理解していないのですが、今回の「一時ファイルの削除」は、「アンマネージ リソースの解放」の部分で行えばよいのでしょうか?その場合、Finalize()のオーバーライドが必要でしょうか?Public Class TesClass Implements IDisposable#Region "IDisposable Support" Private disposedValue As Boolean ' 重複する呼び出しを検出するには ' IDisposable Protected Overridable Sub Dispose(disposing As Boolean) If Not Me.disposedValue Then If disposing Then ' TODO: マネージ状態を破棄します (マネージ オブジェクト)。 End If ' TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下の Finalize() をオーバーライドします。 ' TODO: 大きなフィールドを null に設定します。 End If Me.disposedValue = True End Sub ' TODO: 上の Dispose(ByVal disposing As Boolean) にアンマネージ リソースを解放するコードがある場合にのみ、Finalize() をオーバーライドします。 'Protected Overrides Sub Finalize() ' ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。 ' Dispose(False) ' MyBase.Finalize() 'End Sub ' このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。 Public Sub Dispose() Implements IDisposable.Dispose ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(disposing As Boolean) に記述します。 Dispose(True) GC.SuppressFinalize(Me) End Sub#End RegionEnd Class
- Child Tree -