18

アプリケーションの外部から、間に違いはありますか

...
Environment.Exit(2)

static int Main()
{
    ...
    return 2;
}

4

3 に答える 3

19

最も明白な違いは、コードのどこからでも Environment.Exit を呼び出せることです。それはさておき:

  • 実行中の他のフォアグラウンド スレッドがある場合、メイン フィニッシングはプロセスを終了しません。Environment.Exitとにかくプロセスを停止します。
  • Environment.Exitスタックを巻き戻し、finally ブロックを実行せずにプロセスを終了します(少なくとも私の実験によると)。Mainマネージ コードに関する限り、明らかに、あなたが戻ってきたときには既にトップ レベルにいます。
  • どちらも、プロセスが実際にシャットダウンする前に、ファイナライザーに実行の機会を与えます
  • Environment.Exit適切なセキュリティ許可を要求するため、信頼性の低いアプリでは機能しません。

質問の更新を見たので、あなたが何を意味するのか完全にはわかりません。どちらの場合も、プロセスはコード 2 で終了します...

于 2009-09-24T07:35:53.683 に答える
7

Environment.Exit(2)どこでも使用できます。関数return 2内でのみ。Main()

于 2009-09-24T07:32:42.183 に答える
2

単体テストを実行して Main を呼び出す場合

Program.Main(args);

その場合、Environment.exit は常に失敗を反映します。return を使用すると期待どおりに動作します。

于 2013-08-12T18:20:21.280 に答える