C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[3]: BitmapのDispose
(過去ログ 63 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 6 記事 (1 - 6 表示)] <<
0
>>
■36319
/ inTopicNo.1)
BitmapのDispose
▼
■
□投稿者/ 若葉マーク
(1回)-(2009/05/27(Wed) 13:33:36)
分類:[C#]
ユーザコントロールのグローバルなメンバで、Bitmapを作成した場合、
コントロールの Disposeメソッドに、
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
if (disposing && (bmp != null))
{
bmp.Dispose();
}
base.Dispose(disposing);
}
というような記述は必要ですか?
あるメソッド内で作成する場合は、 using( ){ }を使用しているのですが、
グローバルなメンバの場合は、どのようにしたら良いのか分かりません。
まったくの初心者で、お恥ずかしいのですが、どうぞ、ご教授お願いします。
引用返信
編集キー/
編集
■36326
/ inTopicNo.2)
Re[1]: BitmapのDispose
▲
▼
■
□投稿者/ 渋木宏明(ひどり)
(1165回)-(2009/05/27(Wed) 14:42:20)
2009/05/27(Wed) 14:45:18 編集(投稿者)
> ユーザコントロールのグローバルなメンバで、Bitmapを作成した場合、
「グローバルなメンバ」とは?
単なるメンバと仮定すると
> というような記述は必要ですか?
は、やっとくべきですね。
アプリケーション稼働中に、そのコントロールが何回か生成・破棄されるようなシナリオで効果を発揮します。
ただ、その Bitmap をプロパティやメソッドで公開していて、どこかの誰かが受け取った Bitmap をそのオーナーであるコントロールの寿命と関係なく、いつまでも使い続ける可能性があるなら、また別の対策が必要です。
静的なメンバについては、Dispose() を呼び出すべき適切なタイミングがないので、ほったらかしておくしかありません。
引用返信
編集キー/
編集
■36334
/ inTopicNo.3)
Re[2]: BitmapのDispose
▲
▼
■
□投稿者/ 若葉マーク
(2回)-(2009/05/27(Wed) 15:33:06)
■
No36326
(渋木宏明(ひどり) さん) に返信
とても分かりやすく、丁寧な回答をいただき、ありがとうございます。
> 静的なメンバについては、Dispose() を呼び出すべき適切なタイミングがないので、ほったらかしておくしかありません。
この点について、もうひとつだけ質問があります。
これは、アプリケーションが終了するときに、自動的に開放してくれるという理解でよいのでしょうか?
引用返信
編集キー/
編集
■36346
/ inTopicNo.4)
Re[3]: BitmapのDispose
▲
▼
■
□投稿者/ Jitta on the way
(324回)-(2009/05/27(Wed) 18:10:35)
■
No36334
(若葉マーク さん) に返信
> ■
No36326
(渋木宏明(ひどり) さん) に返信
>
>
> とても分かりやすく、丁寧な回答をいただき、ありがとうございます。
>
>>静的なメンバについては、Dispose() を呼び出すべき適切なタイミングがないので、ほったらかしておくしかありません。
>
> この点について、もうひとつだけ質問があります。
> これは、アプリケーションが終了するときに、自動的に開放してくれるという理解でよいのでしょうか?
>
アプリケーション終了まで待たなくても、GC が動く時に何処からも参照されてなければ(かつ、ジェネレーションが上がってなければ)、解放されますよ。
私の最近の理解では、IDisposable を継承しているクラスを使うなら、それはマネージ リソースしか使っていない、です。IDisposable を継承しているクラスを継承するなら、アンマネージ リソースを使っている、です。
引用返信
編集キー/
編集
■36363
/ inTopicNo.5)
Re[3]: BitmapのDispose
▲
▼
■
□投稿者/ 渋木宏明(ひどり)
(1166回)-(2009/05/27(Wed) 22:44:01)
>>静的なメンバについては、Dispose() を呼び出すべき適切なタイミングがないので、ほったらかしておくしかありません。
>
> この点について、もうひとつだけ質問があります。
> これは、アプリケーションが終了するときに、自動的に開放してくれるという理解でよいのでしょうか?
大雑把にはそうです。
正確には、静的メンバは、そのクラスが読み込まれた AppDomain が破棄される過程で破棄されます。
引用返信
編集キー/
編集
■36366
/ inTopicNo.6)
Re[4]: BitmapのDispose
▲
▼
■
□投稿者/ 若葉マーク
(3回)-(2009/05/27(Wed) 22:51:17)
渋木宏明(ひどり) さん
Jitta on the way さん
明確な回答をありがとうございました。
たいへん感謝しています。
そして、マネージ リソース、アンマネージ リソース使用の判断も
どのようにしたらよいのか分かりませんでしたが、
ひとつの指針をいただき、これまで、理解できずに進めなかった部分が
少し見えてきた気分です。
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-