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

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

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

IDisposableの実装について

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■87573 / inTopicNo.1)  IDisposableの実装について
  
□投稿者/ やや (8回)-(2018/06/07(Thu) 10:50:51)

分類:[.NET 全般] 

お世話になっております、ややと申します。

印刷制御系のクラスの最終処理で必ず通したい処理があります。
その処理とはブラックボックスになっている印刷基盤DLLの「Close」というメソッドを呼ぶことです。

この処理をIDisposableを実装したDisposeメソッドで行うか、Try CatchのFinally句で行うか迷っております。

下記のサイトでは、IDisposableの実装はアンマネージドリソースの解放が必要という要件を満たす必要があるそうですが、
私の今回の場合この要件を満たしているかどうか私の知識ではわかりませんでした。

http://zecl.hatenablog.com/entry/20080226/p2


今回の「Close」メソッドの呼び出しはDisposeメソッドですべきかどうか
ご回答いただければ幸いです。



以上、宜しくお願い致します。

引用返信 編集キー/
■87574 / inTopicNo.2)  Re[1]: IDisposableの実装について
□投稿者/ 774RR (609回)-(2018/06/07(Thu) 11:13:40)
https://divakk.co.jp/aoyagi/csharp_tips_using.html
IDisposable + using は try/catch/finally の finally で Dispose() を呼ぶ、と同一
逆に言うと using は try/catch/finally といっぱい記述するよりタイプ量が少なくするための糖衣構文

ということでオイラなら IDisposable で実装できる場合には Dispose() を使う。
ただし Dispose() を明示的に呼ぶコードを書くくらいなら using を使う、でほぼ確定。

で、今回のこの案件で
1. Close() を自分で呼ぶか
2. Dispose() 中から Close() を呼ぶか
の選択をどうするか、なんだけど、もう無条件で後者でよいと思う。

gc によらずにこのタイミングでしなきゃならない後始末がある=無条件で IDisposable + using を使う、
(その際 manage リソース unmanage リソースの有無を気にする必要は無い)
で OK だと思う。ってか後始末のタイミングを気にする必要がある= unmanage リソースってことだ。

引用返信 編集キー/
■87575 / inTopicNo.3)  Re[2]: IDisposableの実装について
□投稿者/ やや (9回)-(2018/06/07(Thu) 11:19:39)
大変わかりやすいご回答ありがとうございます。

> ってか後始末のタイミングを気にする必要がある= unmanage リソースってことだ。
目から鱗でした。覚えておきます。

IDisposableの実装を行おうと思います。

ありがとうございました。


No87574 (774RR さん) に返信
> https://divakk.co.jp/aoyagi/csharp_tips_using.html
> IDisposable + using は try/catch/finally の finally で Dispose() を呼ぶ、と同一
> 逆に言うと using は try/catch/finally といっぱい記述するよりタイプ量が少なくするための糖衣構文
>
> ということでオイラなら IDisposable で実装できる場合には Dispose() を使う。
> ただし Dispose() を明示的に呼ぶコードを書くくらいなら using を使う、でほぼ確定。
>
> で、今回のこの案件で
> 1. Close() を自分で呼ぶか
> 2. Dispose() 中から Close() を呼ぶか
> の選択をどうするか、なんだけど、もう無条件で後者でよいと思う。
>
> gc によらずにこのタイミングでしなきゃならない後始末がある=無条件で IDisposable + using を使う、
> (その際 manage リソース unmanage リソースの有無を気にする必要は無い)
> で OK だと思う。ってか後始末のタイミングを気にする必要がある= unmanage リソースってことだ。
>
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ