FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » VisualStudio »【VisualStudio】【C#】コードでアプリケーションを終了する / 終了コードを返す

【VisualStudio】【C#】コードでアプリケーションを終了する / 終了コードを返す  


 フォームアプリケーションなどではボタンを押してアプリケーションを終了したいこともあるので念のため。

 コードでアプリケーションを終了するには「Application.Exit()」または「Environment.Exit()」メソッドを使う。使い分けというわけではないが、例えば Windowsアプリケーションのようにライフサイクルがあるものは「Application.Exit()」を、言語のみで使用する場合は「Environment.Exit()」を使うと考えても良い。実際にアプリケーションで「Environment.Exit()」を使ってみるとライフサイクルが実行されず終了してしまうので、「Application.Exit()」が使えるシステムなら通常終了に「Environment.Exit()」を使うのは避けたほうが無難だろう。以下に簡単な例を載せておこう。


(※) Visual Studio 2017 / Windows10(x64) で確認



■Application.Exit() で終了する

●閉じるボタンを押したとき、アプリケーションを終了する
using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
}

private void buttonClose_Click(object sender, EventArgs e)
{
Application.Exit(); //アプリケーション終了
}
}
}

●例えば以下のような名前とするとき






 例えば「閉じる」ボタンの名前が「buttonClose」のとき、そのイベントハンドラ「buttonClose_Click()」(クリックイベント)に「Application.Exit()」を書いておけば、ライフサイクルも含めて正常に終了できる。

 ちなみにボタンクリックのイベントハンドラはデザイン画面でボタンをダブルクリックするか、プロパティウィンドウで「Click」イベントの空欄をダブルクリックすれば自動でコードが生成される(実装コードは「Form1.Designer.cs」を開いて「Windows フォームデザイナーで生成されたコード」を展開すれば「this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);」と書かれているのがわかる)。

 また、「Application.Exit()」をそのまま使った場合は終了コードは0(正常終了)になるので、エラーコードなどを与えたい場合は、「Environment.ExitCode」に int 値を代入しておけば、終了コードとして返せる

Environment.ExitCode = 1;   //終了コードなど
Application.Exit(); //FormClosing, FormClosed なども発生する


●Application.Exit() では終了イベント FormClosing, FormClosed も発生する




■Environment.Exit() で終了する

●終了コード 1 で終了する
using System;

public class Hello{
public static void Main(){
System.Console.WriteLine("Hello C#");
Environment.Exit(1); //終了コード1 で終了する
}
}

 こちらは「System」に組み込まれているものなので、フォームアプリケーション以外でも使用できる。引数の int 値は終了コード(エラーコード)になるが、正常終了した場合は通常0を与える。C言語の exit() みたいなものと考えても良いかも知れない。

 ただ注意して欲しいのは、Windows アプリケーションなどに使用する場合は、そのライフサイクルを無視してしまうので、自作アプリなどに使用する場合は前述した「Application.Exit()」を使った方が良いだろう。実際に前述のコードを「Environment.Exit()」で書き換えてみると、終了イベント「FormClosing」「FormClosed」が発生していないのがわかる。


●Environment.Exit() では終了イベント FormClosing, FormClosed は発生していない


 ちなみに終了イベント「FormClosing」「FormClosed」はデザイン画面でフォームをクリックし、プロパティウィンドウでイベントから「FormClosing」「FormClosed」の空欄をダブルクリックすれば自動でコードが生成される(実装コードは「Form1.Designer.cs」を開いて「Windows フォームデザイナーで生成されたコード」を展開すれば「this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);」「this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed);」と書かれているのがわかる)。これらはフォームが閉じられる前と後で発生する感じだが、アプリの設定などを保存したい場合は「FormClosing」でやった方が良いだろう。ここでは「Console.WriteLine()」で文字列を出力しているだけだ。


●プロパティウィンドウ(イベントは雷アイコン)で空欄をダブルクリックすれば、自動でコードが生成される



(関連記事)
【VisualStudio】【C#】キャンセルボタン・デフォルト(アクセプト)ボタンを設定する


関連記事
スポンサーサイト



category: VisualStudio

thread: プログラミング

janre: コンピュータ

tag: VisualStudioリファレンス 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/266-3c9bca36
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR