Windows フォームアプリの終了コードが常に 0 になる
Windows フォームアプリの終了コードが常に 0 になる
Windows アプリケーション(Windows フォームアプリ)をコマンドプロンプト(cmd.exe)からバッチファイルとして起動している。
ところがプログラムの終了コード(ERRORLEVEL)が常に 0 になってしまう。
(もちろん、プログラムからは 0 以外の値も返している)
終了コードとして 1 を返すだけのプログラムを作ってテストしてみた。
namespace WinFormsApp1
{
internal static class Program
{
[STAThread]
static int Main()
{
return 1;
}
}
}
テストの結果、ERRORLEVEL は 0 だった。
本当は 1 になるはずなのになぜ?
> WinFormsApp1.exe
> echo %ERRORLEVEL%
0
どうやらコマンドプロンプトは、Windows アプリケーションとして作られたプログラムの終了を待たないらしい。
ERRORLEVEL が常に 0 になる原因は、起動したプログラムから終了コードを受け取る前に終わっているからだった。
起動したプログラムの終了を待つようにするには、start コマンドを使う。
start コマンドに WAIT オプションを付けると、プログラムを同期実行してくれる。
> start /WAIT WinFormsApp1.exe
> echo %ERRORLEVEL%
1
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。
ことりと さんにチップを送りました
チップをありがとうございます。
メッセージは管理画面から確認できます。
酒とアクアリウムが最近の楽しみ。
このクリエイターの人気記事
最新記事
TOPVIEWの人気記事
おすすめの記事
この記事にコメントをしてみませんか?