none
デザイナで貼りつけたコントロールが表示されないことがある RRS feed

  • 質問

  • .Net Framework 2.0

    実行環境:Windows Server 2003 R2 Enterprise

    言語:Visual Basic

    上記の環境で、フォーム上にボタン24個、ラベル26個をデザイナ上で配置した画面を常時表示していますが、

    1年に1度ぐらいの頻度で、コントロールが表示されていないことが有ります。

    この画面は静的なメニュー画面で、Visibleを変更する処理などは無く、動的に内容が変化することもないため、

    通常の処理の中で消えることはありません。

    また、この症状は継続稼働中にふと画面を見ると発生していることもあれば、再起動時にスタートアップでたちあがってすぐに発生することもあります。

    意図して再現できない症状の為、原因調査が難しく困っています。

    このような症状を起こす要因となるものや、このような実績がありましたら、

    何でも構いませんので情報を頂けないでしょうか?

    よろしくお願い致します。

    2012年7月18日 0:16

回答

  • > 1年に1度ぐらいの頻度で、コントロールが表示されていないことが有ります。

    大量のアプリケーション起動やサービスの動作によりリソースを食いつぶされる等の過負荷による、グラフィックボードの描画遅延は考えられないでしょうか?


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク 山本春海 2012年7月31日 6:23
    2012年7月18日 2:21
    モデレータ
  • わたしもアプリケーション単体の問題である可能性は低いと思います。

    アプリケーションの実行環境のグラフィック周りを疑っては如何でしょう?

    サーバ機にはオンボードでVRAM統合グラフィックチップを載せている事が多いです。
    その場合VRAMは4MByteとか最小限しか積んでません。
    そのようなハードではレンダリングバッファが不足するのか、描画がおかしくなることは時々あります。
    特にサーバに直繋ぎのモニタで、ホストOS上でのGUIアプリケーションで顕著です。
    リモートデスクトップや仮想化したゲストOSで実行すれば大丈夫な可能性があります。

    スタートアップにしているなら、遅延起動も有効かもしれません。
    • 回答としてマーク 山本春海 2012年7月31日 6:23
    2012年7月18日 4:22
  • > 負荷が大きいことも事実で、やはり描画遅延と考えるのが妥当なのでしょうか。

    コントロールが表示されてない状態で画面をディスプレイの範囲外に移動し、再度戻してコントロールが表示されてたら、明らかに描画遅延と思われます。
    たとえばこんな感じ・・・

    VSS の「比較」ウィンドウですが、なぜか私の環境では描画遅延が頻繁に発生します。起動時は左側のペインがなぜかグレーになってます。

    いったんディスプレイの外に画面を移動し、戻すと描画されてます(苦笑

    > また、キーボードから画面表示を切り替える(別のフォームを表示)ことで、症状が改善されます。

    とありますので、やはり描画遅延っぽいですね。


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク Camui 2012年7月20日 9:56
    2012年7月19日 2:04
    モデレータ

すべての返信

  • 私の場合は、Panelコントロールを継承したコントロールを自作して
    それにコントロールを載せていたのですが、
    自作Panelにバグを織り込んでしまっていて、そんな風になった記憶があります。
    もっとも年一とのことなのでバグじゃないようにも思いますが。
    2012年7月18日 1:33
  • > 1年に1度ぐらいの頻度で、コントロールが表示されていないことが有ります。

    大量のアプリケーション起動やサービスの動作によりリソースを食いつぶされる等の過負荷による、グラフィックボードの描画遅延は考えられないでしょうか?


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク 山本春海 2012年7月31日 6:23
    2012年7月18日 2:21
    モデレータ
  • わたしもアプリケーション単体の問題である可能性は低いと思います。

    アプリケーションの実行環境のグラフィック周りを疑っては如何でしょう?

    サーバ機にはオンボードでVRAM統合グラフィックチップを載せている事が多いです。
    その場合VRAMは4MByteとか最小限しか積んでません。
    そのようなハードではレンダリングバッファが不足するのか、描画がおかしくなることは時々あります。
    特にサーバに直繋ぎのモニタで、ホストOS上でのGUIアプリケーションで顕著です。
    リモートデスクトップや仮想化したゲストOSで実行すれば大丈夫な可能性があります。

    スタートアップにしているなら、遅延起動も有効かもしれません。
    • 回答としてマーク 山本春海 2012年7月31日 6:23
    2012年7月18日 4:22
  • 皆様ありがとうございます。

    記載を忘れてしまいましたが、症状が発生した時、画面にボタンなどは表示されていないのですが、

    これらのボタンはF1~F12に割りついており、キーボードから押すことができます。

    また、キーボードから画面表示を切り替える(別のフォームを表示)ことで、症状が改善されます。


    確認しましたが、自作のコントロールなど特別なコントロールはありませんでした。

    全てのコントロールは標準のボタンやラベルコントロールを、デザイナ上で貼り付けたものです。


    グラフィック周りに関してのご指摘がありましたので、サーバーのスペックを確認したところ、ES1000(32MB)でした。

    動画や3Dなどのグラフィックの負荷はありませんが、OracleDBやアプリケーションなどによる負荷は大きいです。

    また、サーバーに直接つないだディスプレイと、RDP接続の両方で利用することがあります。

    (同時に見ることはなく1ユーザーです。)


    グラフィックメモリ32MBというスペックはこの用途では十分のようにも思いますが、

    負荷が大きいことも事実で、やはり描画遅延と考えるのが妥当なのでしょうか。



    • 編集済み Camui 2012年7月19日 1:14
    2012年7月19日 1:03
  • > 負荷が大きいことも事実で、やはり描画遅延と考えるのが妥当なのでしょうか。

    コントロールが表示されてない状態で画面をディスプレイの範囲外に移動し、再度戻してコントロールが表示されてたら、明らかに描画遅延と思われます。
    たとえばこんな感じ・・・

    VSS の「比較」ウィンドウですが、なぜか私の環境では描画遅延が頻繁に発生します。起動時は左側のペインがなぜかグレーになってます。

    いったんディスプレイの外に画面を移動し、戻すと描画されてます(苦笑

    > また、キーボードから画面表示を切り替える(別のフォームを表示)ことで、症状が改善されます。

    とありますので、やはり描画遅延っぽいですね。


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク Camui 2012年7月20日 9:56
    2012年7月19日 2:04
    モデレータ
  • やはり負荷による描画への影響ぐらいしか考えられないですかね。

    これだと対応策も思い当たりませんので、このまま様子を見て頂くようにします。

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

    2012年7月20日 10:03
  • VSS の「比較」ウィンドウですが、なぜか私の環境では描画遅延が頻繁に発生します。起動時は左側のペインがなぜかグレーになってます。

    VSS2005 は Vista リリースよりも前に開発されたものであり、VS2005 同様、Vista での再描画(DWM 有効時の再描画と言うべきか?)がきちんとなされない実装になっています。
    反面、VS2008 以降では改善しているので、VSS2005/VS2005 の作り方が悪い ということを示唆していると考えています。

    このため、VS2005/VSS2005 を例に今回の件を論じるのは妥当なのかどうか、疑問に感じます。
    (そもそも、VSS2005 は .NET でもないですよね…)

    2012年7月20日 22:08
    モデレータ
  • VSS2005 は Vista リリースよりも前に開発されたものであり、VS2005 同様、Vista での再描画(DWM 有効時の再描画と言うべきか?)がきちんとなされない実装になっています。
    反面、VS2008 以降では改善しているので、VSS2005/VS2005 の作り方が悪い ということを示唆していると考えています。

    このため、VS2005/VSS2005 を例に今回の件を論じるのは妥当なのかどうか、疑問に感じます。
    (そもそも、VSS2005 は .NET でもないですよね…)

    Azulean さん、ご指摘ありがとうございます。
    そうですね、確かにシステムに起因する描画遅延の例としては適切ではなかったように思われます(汗)

    すでに Camui さんが私の回答にマークを付けておられますが、もともと例として挙げただけで
    他に回答に相応しい返信が見受けられますが、少し様子を見たいと思います。


    #個人的には hihijiji さんとその直前の私の返信が相応しいと思ってます。
    #ただしCamui さんがすでに回答マークを付けられてますので、モデレータが別に回答マークを付けるものどうかと・・・



    ひらぽん http://d.hatena.ne.jp/hilapon/

    2012年7月24日 1:42
    モデレータ