アプリケーションの起動や画面表示に遅延が発生する要因について

文書番号 : 82129     文書種別 : Info
登録日 : 2017/04/17     最終更新日 : 2017/04/17

対象製品

Studio for WinForms

詳細

C1FlexGridコントロールなど、CStudioに収録されたコンポーネントを使用した画面を表示させる際に、非常に時間がかかることがあります。このような現象が発生する要因について、以下にいくつかピックアップします。

(1)FormのコンストラクタやLoadイベントなどでの時間のかかる処理を実行

FormのLoadイベントは通常、フォームの読み込みが完了したときに発生しますが、ほとんどの場合この時点ではフォームの表示は開始していません。そのため、FormのコンストラクタやLoadイベント内で時間のかかる処理などを実行していると、それだけ画面の表示に時間がかかることになります。

体感的な遅延を軽減する方法として、スプラッシュ画面を表示したり、画面が最初に表示されたときに発生するShownイベントを使用して初期化処理を行うといったことが考えられます。

また、グリッドやチャート製品では、既定ではデータが追加されるたびに画面の再描画が行われるため、繰り返し処理によって大量のデータを1つずつ設定しようとすると、再描画処理が繰り返し発生することで画面表示に遅延が発生する要因となります。

再描画の発生頻度を抑える方法として、配列やデータソースなどを使用して大量のデータをまとめて設定したり、一時的にイベントの発生を抑制するといったことが考えられます。

(2)アセンブリのデジタル署名とインターネットに接続できない環境

本製品のアセンブリには、第三者による改ざんが行われていないことを保証するため、またGACへの登録など厳密な名前による署名が必要な機能への対応を目的として、デジタル署名が付加されています。

アセンブリに対して厳密な名前による署名が行われている場合、アプリケーションの起動時(あるいは該当アセンブリ内のクラスのインスタンスが初めて生成されるとき)に、署名の検証が行われます。インターネットに接続できないなど、.NET Frameworkによって厳密な名前の検証が行うために必要な情報にアクセスできない状況では、この処理に時間がかかります。

また、これはフォームに直接コントロールを貼りつけているか、またはコード上でインスタンスを追加したかに関わらず発生します。

この現象について、ナレッジベースの下記項目にて詳しく説明していますので、ご参考ください。

◆ナレッジベース
文書番号:81527
インターネットに接続できない環境で、アプリケーションの起動が遅くなってしまいます

※例えば、権限の違いによってインターネットへの接続を禁止あるいは制限している、または特定のURL以外にはアクセスできないようにしているといったケースで、上記のような現象が発生する可能性があります。
※コード上でC1FlexGridコンポーネントのインスタンスを作成しているケースでは、そのコードが実行される時点となるため、コーディングによっては「アプリを使っている最中に遅延が発生する」というタイミングもあり得ます。

厳密な名前による署名に関する詳細については、MSDNの下記トピックをご参考ください。

◆MSDN
マネージ アプリケーションに対する厳密な名前による署名

(3)64ビット(x64)環境上で64ビットアプリケーションを実行

64ビット(x64)環境上で64ビットアプリケーションを実行すると、32ビットアプリケーションを実行した場合に比べ、初回起動時に時間がかかります。この問題は、Microsoft社からの見解として64ビットOS上における.NET Frameworkの制限事項であることが判明しています。

この現象について、ナレッジベースの下記項目にて詳しく説明していますので、ご参考ください。

◆ナレッジベース
文書番号:81527
64ビット(x64)環境でWindowsアプリケーションを実行した場合、初回起動に時間がかかる

(4).NET Frameworkにおけるアプリケーションの起動時間

.NET Frameworkでは、上記以外にもアプリケーションの起動時間に影響を与える様々な要因があります。
例えばアプリケーションを初めて起動するときは、2回目以降よりも時間がかかる(2度目以降はコンポーネント用のページのほとんどが既にメモリに読み込まれることで、ディスク アクセス時間が節約される)、また、初期化コードが他のクラスを参照していることで初期化処理が遅延する、などが考えられます。

このような起動が遅くなる要因について、以下のMSDNにいくつか紹介されています。

◆MSDN
アプリケーションの起動時間

※主にWPFに関する内容となっていますが、いくつかの項目はWindowsフォームアプリケーションにも該当しますので、ご参照いただけます。