IDisposableは、割り当てられたアンマネージドリソースを解放する機構を実装するためのインターフェイス・・・。
リソースを明示的に解放しないといけないクラスに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