none
デザイナ変更してからの待機時間 RRS feed

  • 質問

  • VS2010(C++/CLI)/Win7の環境でWinフォームアプロケーションの作成をしています。

    タブコントロールの中でタブページが10ページほどあり、それぞれの中にチェックボックス/ラベル/テキストボックス等のコントロールが200個

    1フォーム上にコントロールが2000個強あります。

    その中でロケーションプロパティーやヘッダーファイルのソースの編集をした際

    コードエディタ⇔デザイナを切り替える際、約20分ほどVS2010停止します。

    コードのセーブとかでも起きます

    (他のアプリケーションは動作するので、パソコン自体はフリーズしていません)

    これはデザイナ/コードエディタでの変更をデザイン/コードに反映するためにVS2010が自動生成しているためと思いますが

    この切り替え時の時間が長いので作業が止まってしまいます。

    これは単純にコートロールを一つのフォームに追加しすぎているためにしょうがないものなのか

    それとも設定で改善するものなのか、自分なりに調べてみましたがわからなかったので投稿させていただきました。

    一つのフォームでたくさんのコントロールを使うということはあると思いますが、どう対処すればいいのかなと思いました。

    コードで記述すれば軽減すると思いますが、デザインの確認ができなくなってしまうの巻と思います。


    お分かりの方がいらしたら教えてください、よろしくお願いします。

    開発環境は
    Win7Pro 
    CPU:corei3の2.1GHz
    メモリ:4GB
    のノートパソコンです

    2012年1月31日 10:51

回答

  • PC のスペックを考えると、デザイン時コードの生成時間でしょうね。

    タブページ内をユーザコントロールにするなどで、開発環境としては改善するかと思います。

    しかしながら、コントロールが200以上ある(2000ではなく200ですよ)ようなフォームは、広く配布するようなアプリケーションだとユーザ環境でも動作が不安定になる原因になるため、最終的に表示されるウィンドウの単位でみて200程度に抑えるほうが好ましいです。(これは、ユーザコントロール等を利用して開発環境を軽くしても、実行時にはユーザコントロールの中身まで数える必要があるという意味です)

     WPF に移行するというのも解決策の1つです。(コントロールの数によって不安定になる要素は減りますが、開発環境に要求されるスペックがやや上がる印象はあります)

     

    2012年2月1日 0:15
  • 参考までにお聞きしたのですが
    VS2010を動作させるパソコンのスペックとしてはもう少しメモリ等を増やした方がいいのでしょうか
    VS2010が起動するにも時間かかるなぁと感じているんで

    開発環境は
    Win7Pro 
    CPU:corei3の2.1GHz
    メモリ:4GB
    のノートパソコンです

    Win7 は 32bit版ですか?もしそうならメモリは 4GB限界ですね。もっとも3GBくらいしか認識しないでしょうが・・・

    ちなみに私のいまの開発環境は

    Win7 64bit
    CPU:Core i7-2600
    メモリ:12GB
    グラボ:GeForce GT 530

    ですが、VS2010を三つ、Blend、Photoshop、IE、VMWare を同時起動してもサクサク動きます。
    開発環境があまり快適すぎるのもどうかと思われるので、テストは仮想環境や低スペックマシンで行ってます。


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答の候補に設定 山本春海 2012年2月10日 7:01
    • 回答としてマーク 山本春海 2012年2月13日 8:41
    2012年2月1日 2:37
    モデレータ
  • コントロールが200以上ある(2000ではなく200ですよ)ようなフォーム 

    「1フォーム上にコントロールが2000個強あります」とあるので、1 フォーム上の総数が 2000 個だと思っていますし、桁違いに多いという印象です。
    従って、開発環境の改善よりも、画面設計の見直しの優先度が高いと考えています。

    単純にユーザーコントロールとして分離すれば改善するかと言われれば、マシになる期待はあるものの、絶対ではありませんね。
    逃げの一手としてこれに頼るよりは、できれば攻めとして画面を大きく見直して、1 フォーム内の設定要素・データ表示要素を大きく減らす、分散させたいところです。

    # 200 は 1 ページあたりのコントロール数ですね。:-P


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2012年2月1日 13:21
    モデレータ

すべての返信

  • 私の個人の意見としては、コントロールを配置しすぎだと思っています。
    部分的にユーザーコントロールとして分離して作成するのがよく使われる手法ではないでしょうか。
    たとえば、タブページの中に貼るコントロールをユーザーコントロールとして分離し、タブページには分離して作ったユーザーコントロールだけを貼り付けるとか。

    # それにしても、2,000 個は桁が違うなぁ…。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2012年1月31日 13:37
    モデレータ
  • PC のスペックを考えると、デザイン時コードの生成時間でしょうね。

    タブページ内をユーザコントロールにするなどで、開発環境としては改善するかと思います。

    しかしながら、コントロールが200以上ある(2000ではなく200ですよ)ようなフォームは、広く配布するようなアプリケーションだとユーザ環境でも動作が不安定になる原因になるため、最終的に表示されるウィンドウの単位でみて200程度に抑えるほうが好ましいです。(これは、ユーザコントロール等を利用して開発環境を軽くしても、実行時にはユーザコントロールの中身まで数える必要があるという意味です)

     WPF に移行するというのも解決策の1つです。(コントロールの数によって不安定になる要素は減りますが、開発環境に要求されるスペックがやや上がる印象はあります)

     

    2012年2月1日 0:15
  • Azuleanさま

    有難うございます

    やはり、コントロ-ルの貼りすぎなんでしょうね。
    今まではあまり多くないコントロールで作っていて気にならなかったのですが、多くなってきて気になり始めました。

    単純にメモリ不足だと思っていて、
    お恥ずかしい話、ユーザーコントロールというものを知らなかったので
    それを知れただけでもよかったです、有難うございます。


    参考までにお聞きしたのですが
    VS2010を動作させるパソコンのスペックとしてはもう少しメモリ等を増やした方がいいのでしょうか
    VS2010が起動するにも時間かかるなぁと感じているんで

    2012年2月1日 0:38
  • T.Takaokaさま

    有難うございます

    Azuleanさまもおっしゃっているとおり、コントロ-ルの貼りすぎなんでしょうね。

    200程度のコントロールで実現できるか再検討してみたいと思います
    ユーザーコントロールは勉強して利用していきたいと思います

     

    参考までにお聞きしたのですが
    VS2010を動作させるパソコンのスペックとしてはもう少しメモリ等を増やした方がいいのでしょうか
    VS2010が起動するにも時間かかるなぁと感じているんで

    2012年2月1日 0:43
  • 試しに
    VisualBasic、C#、C++/CLIで
    それぞれWindowsフォームアプリケーションを作成しフォーム上で400個のラベルを
    適当に配置し
    コードエディタ⇔デザイナの切り替えを確認したらC++/CLIが一番遅かったです。

     

    言語によっても違うのですね

    2012年2月1日 2:22
  • 参考までにお聞きしたのですが
    VS2010を動作させるパソコンのスペックとしてはもう少しメモリ等を増やした方がいいのでしょうか
    VS2010が起動するにも時間かかるなぁと感じているんで

    開発環境は
    Win7Pro 
    CPU:corei3の2.1GHz
    メモリ:4GB
    のノートパソコンです

    Win7 は 32bit版ですか?もしそうならメモリは 4GB限界ですね。もっとも3GBくらいしか認識しないでしょうが・・・

    ちなみに私のいまの開発環境は

    Win7 64bit
    CPU:Core i7-2600
    メモリ:12GB
    グラボ:GeForce GT 530

    ですが、VS2010を三つ、Blend、Photoshop、IE、VMWare を同時起動してもサクサク動きます。
    開発環境があまり快適すぎるのもどうかと思われるので、テストは仮想環境や低スペックマシンで行ってます。


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答の候補に設定 山本春海 2012年2月10日 7:01
    • 回答としてマーク 山本春海 2012年2月13日 8:41
    2012年2月1日 2:37
    モデレータ
  • ひらぽんさま

     

    有難うございます

    参考にさせていただきます

    OSはWin732bit版です。なのでメモリ増設は不可能ですね。

    開発環境は上を望むときりがないのも確かなので教えていただいたスペックを参考に

    懐(会社)と相談して作業に支障をきたさないレベルでパソコンのスペックアップができればと思います。

     

    ただ、Azulen様、K.Takaoka様のご指摘のようにプログラムの作り方で改善もできそうなのでそのあたりもやっていきたいと思います

     

    有難うございます

     

    2012年2月1日 10:32
  • コントロールが200以上ある(2000ではなく200ですよ)ようなフォーム 

    「1フォーム上にコントロールが2000個強あります」とあるので、1 フォーム上の総数が 2000 個だと思っていますし、桁違いに多いという印象です。
    従って、開発環境の改善よりも、画面設計の見直しの優先度が高いと考えています。

    単純にユーザーコントロールとして分離すれば改善するかと言われれば、マシになる期待はあるものの、絶対ではありませんね。
    逃げの一手としてこれに頼るよりは、できれば攻めとして画面を大きく見直して、1 フォーム内の設定要素・データ表示要素を大きく減らす、分散させたいところです。

    # 200 は 1 ページあたりのコントロール数ですね。:-P


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2012年2月1日 13:21
    モデレータ
  • Azuren様

    有難うございます。

    1フォーム上のコントロールの数を200になることを一つの目安にして、画面自体の設計を見直しをかけたいと思います。

    コントロールを増やすよりは、フォームを増やした方が負荷としては軽いのでしょうか

    表示に関しては使う側の意見も取り入れないといけないので、うまく自分の首を締めない程度に愛みつを取りたいと思います。

     

    2012年2月2日 4:50