読者です 読者をやめる 読者になる 読者になる

IDisposable

IDisposableは、割り当てられたアンマネージドリソースを解放する機構を実装するためのインターフェイス・・・。

IDisposable インターフェイス (System)

リソースを明示的に解放しないといけないクラスにDisposeメソッドを実装し、この中で解放処理を実行するようにする・・・。

CustomReader.csを追加し、

ファイル名を2つ受け取るクラスのコンストラクタを定義・・・。

ReadAllで2つのファイルのストリームを連続して開く・・・。
開けたら、publicなtext1、text2に格納・・・。
例外ならエラーメッセージを出力・・・。
finallyでDisposeメソッドを呼び出すようにする・・・。

Disposeメソッドでは、"Dispose"と出力し、そのあとはそれぞれのストリームが開いていたら閉じている・・・。
finallyで呼ばれているので、成功でも失敗でもDisposeが呼ばれ、ストリームリソースが解放される・・・。

MainClass.csは、

"test1.txt"、"text2.txt"をCustomReaderで開く・・・。
読み込めたらtext1、text2を出力・・・。

test1.txtだけなら、

Error: ファイル 'C:\Project\Cloud\github.com\Sample\dotnet\IDisposable\IDisposab
le\src\IDisposable\IDisposable\bin\Release\test2,txt' が見つかりませんでした。
Dispose
sr1 closed!
続行するには何かキーを押してください . . .

となり、test2.txtもあれば、

Dispose
sr2 closed!
sr1 closed!
cr.text1 = ABCDE
cr.text2 = XYZ
続行するには何かキーを押してください . . .

となる・・・。
成功でも失敗でもDisposeを呼んでいる・・・。

Sample/dotnet/IDisposable/IDisposable/src/IDisposable at master · bg1bgst333/Sample · GitHub