フレッシュマン企画 連載
簡単!Visual Studio 2008入門

第6回 Windowsアプリケーションのデバッグ&リリース

デジタルアドバンテージ 一色 政彦
2009/06/17

 なおVS 2008では、この「this.Close()」と記述する際、「this.」と入力すると、そのthis(=Displayオブジェクト)に含まれるメンバの一覧が自動的に表示される。これは、IntelliSense(インテリセンス)と呼ばれるVS 2008の機能である。IntelliSenseは、[Ctrl]+[スペース]キーを押すことで、手動で表示させることもできる。また、文字の入力途中で[Ctrl]+[スペース]キーを押すと、コードの入力を補完してくれる。IntelliSenseを使いこなせば開発生産性を高めることができるので、ぜひ使い慣れてほしい。

VS 2008のIntelliSense(インテリセンス)機能
IntelliSenseは、基本的にIDEによって自動的に表示されるが、[Ctrl]+[スペース]キーを押すことで、手動で表示させることもできる。いったんIntelliSenseを閉じてしまった後に、IntelliSenseを再表示したい場合には[Ctrl]+[スペース]キーを利用すればよい。

 以上で、アプリケーションを終了する機能を実装できた。これを再度ビルドして実行すると、今度は実際にアプリケーションが終了するようになったはずだ。

 次に、「フォームがフェード・アウトしながら終了する機能」を実装しよう。

フォームのフェード・アウト機能の実装

 ここでは、フォームのフェード・アウトを行う、次のようなシグネチャのメソッドを追加しよう(ソース・コードに書き込めばよい)。

private void FormFadeOut()
{
}
フォームをフェード・アウトさせる機能を実装するFormFadeOutメソッドのシグネチャ

 このFormFadeOutメソッドに、フォームをフェード・アウトさせる機能を実装する(後述)。

 FormFadeOutメソッドの追加が終わったら、先ほど実装した「アプリケーションを終了する処理」の前に、そのFormFadeOutメソッドを呼び出すようにしよう。具体的には、次のようなコードになる。

private void menuItemClose_Click(object sender, System.EventArgs e)
{
  // フォームをフェード・アウトさせる
  FormFadeOut();
  // フォームを閉じる → アプリケーションを終了する
  this.Close();
}
menuItemClose_Clickメソッド内へのFormFadeOutメソッドの追加

 仕上げとして、実際のフェード・アウト処理をFormFadeOutメソッド内に記述する。フェード・アウトとは徐々にウィンドウが見えなくなっていくことなので、現在50%の不透明度(前回の解説でOpacityプロパティを50%に指定した)を49、48、47……と、1つずつ減らしていけばよい(不透明度が減っていく=透明になっていく)。ただし、単に減らすだけだと、コンピュータ(CPU処理)のスピードは非常に速いので、あっという間に0%まで減ってしまう。そこで、1%減るごとに1ミリ秒だけ処理を停止することにしよう(処理の停止には、System.Threading名前空間に所属するThreadクラスの静的メソッドSleepを使えばよい)。これにより少し時間をかけてフェード・アウトするようになる。

 このフェード・アウト処理を実装したのが、次のコードである(実はコード内に正しくない部分があるが、これは以降の説明のための故意の誤りである)。

private void FormFadeOut()
{
  for (int n = 49; n >= 0; n++)
  {
    // 49%から1%ずつ不透明度を少なくする(=透明になる)
    this.Opacity = (double)n / 100;
    // 1%減るごとに1ミリ秒処理を停止する
    System.Threading.Thread.Sleep(1);
  }
}
フォームをフェード・アウトさせる機能を実装するFormFadeOutメソッドの実装

 ここまででコーディングは完了である。

 さっそく、完成したソース・コードをビルドして実行してみよう。実行した「時計」アプリケーションのフォーム上で右クリックしてコンテキスト・メニューを表示し、そのメニューから[終了]を選択すると、次の画面のように、アプリケーションがフリーズして「応答なし」の状態になってしまった。これは先ほど実装したコードに何らかのバグがあるためと考えられる。

バグのあるプログラムの実行画面
バグのあるプログラムを実行したところ。また、そのアプリケーションを強制終了しているところ。
  [終了]を実行すると、アプリケーションがフリーズして「応答なし」の状態になってしまう。
  アプリケーションを終了するには、[Ctrl]+[Alt]+[Del]キーで表示される[Windows タスク マネージャ]の[プロセス]タブから終了したいアプリケーションのプロセス(この例では「MyClock.exe」)を選択する。
  [プロセスの終了]ボタンをクリックすれば、選択したアプリケーションが強制終了する。

 このアプリケーションには、「バグ(Bug)」があるためそれを取り除く「デバッグ(Debug)」が必要となる。よって次に、そのデバッグ方法について解説する(バグの個所はお気づきの方も多いだろうが、ここでは目をつぶっていていただきたい)。


 INDEX
  [フレッシュマン企画 連載]簡単!Visual Studio 2008入門
  第6回 Windowsアプリケーションのデバッグ&リリース
    1..NETプログラミングのための情報収集
    2.VS 2008を駆使したプログラミング方法
  3.VS 2008 IDEのウィザード機能の活用
    4.VS 2008によるアプリケーションのデバッグ方法
    5.完成したアプリケーションのリリースと配布

インデックス・ページヘ  「簡単!Visual Studio 2008入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間