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

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

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

Re[7]: Designer.csファイルのDisposeメソッドを修正


(過去ログ 57 を表示中)

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

■32172 / inTopicNo.1)  Designer.csファイルのDisposeメソッドを修正
  
□投稿者/ ガチンコ (1回)-(2009/02/02(Mon) 17:22:40)

分類:[C#] 

質問がございます。

form1.csというクラスを作成し、
そのform1.Designer.csのDisposeメソッドを修正(自作メソッドを1つ追加)し、
希望していた動作も実装できました。

が、Desiner.csファイルを修正することによって、
なにか不都合な点等、ありますでしょうか?

大雑把な質問ですが、ご存じの方、よろしくお願いします。
引用返信 編集キー/
■32173 / inTopicNo.2)  Re[1]: Designer.csファイルのDisposeメソッドを修正
□投稿者/ επιστημη (1643回)-(2009/02/02(Mon) 17:41:54)
επιστημη さんの Web サイト
2009/02/02(Mon) 17:42:14 編集(投稿者)

> が、Desiner.csファイルを修正することによって、
> なにか不都合な点等、ありますでしょうか?

実害なさそうですけど、Form1.cs側でできるならそのほうが。
Dispose以外、処理する場所/時点が見つからんならしゃーないでしょけど。

引用返信 編集キー/
■32174 / inTopicNo.3)  Re[1]: Designer.csファイルのDisposeメソッドを修正
□投稿者/ 魔界の仮面弁士 (984回)-(2009/02/02(Mon) 17:55:27)
No32172 (ガチンコ さん) に返信
> が、Desiner.csファイルを修正することによって、
> なにか不都合な点等、ありますでしょうか?

Dispose に実装したコードに、一切の問題が無いという前提で
良いのであれば、アプリの動作その物には問題無いと思います。

ただし(Form に限った話では無いですが)、*.desiner.cs というファイルは、
開発ツール側で自動生成されるファイルなので、何らかの理由で *.desiner.cs が
自動再生成された場合、自身の編集結果が失われる可能性はあるでしょう。

なので可能な限り、メイン側に処理を記述する事をお薦めします。
(ただし、デザイナ コード側に手を加えねばならない状況もありえますが…)

今のところ、Dispose が再生成された所は見た事がありませんが、
*.desiner.cs の内容は、Servie Pack の有無でも変化する事もあるので、
今後、Dispsoe のコードが書き換わる可能性が無いとはいえません。

# たとえば DataSet の desiner.cs は、Service Pack 適用後、
# "System.〜〜" の代わりに "global::System.〜〜" が使われるよう
# 修正されたため、[右クリック]→[カスタムツールの実行]などによって
# *.desiner.cs のコードが全面的に書きかえれられる事を確認しています。
引用返信 編集キー/
■32175 / inTopicNo.4)  Re[2]: Designer.csファイルのDisposeメソッドを修正
□投稿者/ ガチンコ (3回)-(2009/02/02(Mon) 18:23:13)
やはりDisposeメソッドまでごっそり書き換えられるんですね・・・。
form1.cs側にDisposeメソッドをごっそり移動させて、コメントを書いて対処しようと思います。

#ここに処理を入れなければ、大変な修正が入ってしまうので・・・。

επιστημηさん、魔界の仮面弁士さんありがとうございました。
解決済み
引用返信 編集キー/
■32179 / inTopicNo.5)  Re[2]: Designer.csファイルのDisposeメソッドを修正
□投稿者/ 渋木宏明(ひどり) (1055回)-(2009/02/02(Mon) 19:50:00)
渋木宏明(ひどり) さんの Web サイト
2009/02/02(Mon) 20:49:03 編集(投稿者)

この場合の Dispose は「どの」 Dispose なんだろう?

Dispoose(bool) の override なら自分で中身を(適切に)書き換えてもいいと思うけど、Form の IDisposable.Dispose() で何かすべき場合なんてそうそうあるもんじゃないと思う。

解決済み
引用返信 編集キー/
■32196 / inTopicNo.6)  Re[3]: Designer.csファイルのDisposeメソッドを修正
□投稿者/ ガチンコ (4回)-(2009/02/03(Tue) 10:41:03)
No32179 (渋木宏明(ひどり) さん) に返信
> 2009/02/02(Mon) 20:49:03 編集(投稿者)
> 
> この場合の Dispose は「どの」 Dispose なんだろう?
> 
> Dispoose(bool) の override なら自分で中身を(適切に)書き換えてもいいと思うけど、Form の IDisposable.Dispose() で何かすべき場合なんてそうそうあるもんじゃないと思う。
> 

ご返信ありがとうございます。
Dispoose(bool) の overrideの方になると思います。

-----------------------------------------------------------------
以下、Desiner.csファイルのDisposeメソッドです。

        /// <summary>
        /// 使用中のリソースをすべてクリーンアップします。
        /// </summary>
        /// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param>
        protected override void Dispose(bool disposing)
        {
            //●●ここに自作メソッドを追加●●
            HogeHoge();

            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
-----------------------------------------------------------------

解放処理漏れの不具合があったため、その処理を追加しようと思ったのですが、
何十か所と手を入れなければならない良くない作りでして…。
とりあえず、強引に上記のような処置をとっています。

解決済み
引用返信 編集キー/
■32197 / inTopicNo.7)  Re[4]: Designer.csファイルのDisposeメソッドを修正
□投稿者/ なちゃ (249回)-(2009/02/03(Tue) 11:10:59)
本題とは関係ないですが念のため。
HogeHogeメソッドの呼び出しにおいてdisposingパラメータを考慮してないと思われますが、そこは問題ないですか?
引用返信 編集キー/
■32201 / inTopicNo.8)  Re[5]: Designer.csファイルのDisposeメソッドを修正
□投稿者/ ガチンコ (5回)-(2009/02/03(Tue) 12:33:32)
No32197 (なちゃ さん) に返信
> 本題とは関係ないですが念のため。
> HogeHogeメソッドの呼び出しにおいてdisposingパラメータを考慮してないと思われますが、そこは問題ないですか?

お心遣いありがとうございます。
disposingパラメータは常にTrueにて呼び出しがかかっているため、問題ないと思います。
将来性を考えたとしても、大丈夫です……きっと。
解決済み
引用返信 編集キー/
■32225 / inTopicNo.9)  Re[6]: Designer.csファイルのDisposeメソッドを修正
□投稿者/ 渋木宏明(ひどり) (1057回)-(2009/02/03(Tue) 17:12:16)
渋木宏明(ひどり) さんの Web サイト
> disposingパラメータは常にTrueにて呼び出しがかかっているため、問題ないと思います。

そりゃたまたまかもしれないので、何の保証にもならないです>常に True

disposing の値によって HogeHoge() の呼び出しを制御するか、HogeHoge() が disposing がどんな値であっても問題なく動作することを保証するべきです。

> 将来性を考えたとしても、大丈夫です……きっと。

将来的には

> 解放処理漏れの不具合があったため、その処理を追加しようと思ったのですが、
> 何十か所と手を入れなければならない良くない作りでして…。
> とりあえず、強引に上記のような処置をとっています。

を改善するべきです。

引用返信 編集キー/
■32278 / inTopicNo.10)  Re[7]: Designer.csファイルのDisposeメソッドを修正
□投稿者/ ガチンコ (6回)-(2009/02/04(Wed) 12:31:43)
No32225 (渋木宏明(ひどり) さん) に返信
>>disposingパラメータは常にTrueにて呼び出しがかかっているため、問題ないと思います。
> 
> そりゃたまたまかもしれないので、何の保証にもならないです>常に True
> 
> disposing の値によって HogeHoge() の呼び出しを制御するか、HogeHoge() が disposing がどんな値であっても問題なく動作することを保証するべきです。

すいません。深く考えておりませんでした。
disposingがfalseの場合とは、デストラクタのときなのですね・・・。勉強になります。

デストラクタのときに、HogeHoge()メソッドが呼び出されると、問題なく動作することは保証できないです。
DBアクセスの処理が入ってますので、どうなることやら…。

そう考えるとHogeHoge()メソッドはDispose時に実行されたいので、disposingがTrueのときだけ、
呼び出されるようにしたいと思います。
>なちゃさん、渋木宏明(ひどり) ありがとうございます。

-----------------------------------------------------------------
以下、Desiner.csファイルのDisposeメソッドです。

        /// <summary>
        /// 使用中のリソースをすべてクリーンアップします。
        /// </summary>
        /// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param>
        protected override void Dispose(bool disposing)
        {
            //●●ここに自作メソッドを追加●●
            if (disposing)
            {
                HogeHoge();
            }

            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
-----------------------------------------------------------------


>>将来性を考えたとしても、大丈夫です……きっと。
> 
> 将来的には
> 
>>解放処理漏れの不具合があったため、その処理を追加しようと思ったのですが、
>>何十か所と手を入れなければならない良くない作りでして…。
>>とりあえず、強引に上記のような処置をとっています。
> 
> を改善するべきです。
> 

はい。そこは上司と相談します。

とりあえず、解決済みチェックをしておきます。
問題点、考慮漏れ等ありましたら、ご指摘をお願い致します。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -