0

重複の可能性:
Application.Exit

Application.Exit()実行に失敗する Winforms アプリがあります。

public Form1()
{       
   InitializeComponent();           
   path=parseINI();//Gets path from ini file           
} 

私の場合、Application.Exit()動作しない parseINI メソッドから呼び出されています。アプリの起動時に呼び出されるのは問題ですか?フォームが読み込まれた後に実行される別のメソッドに貼り付けたところ、そこで動作しました。私は parseINI メソッドで Environment.Exit を使用しましたが、それは機能しました (WinForms ではなくコンソール アプリ用であるにもかかわらず)。

編集:おそらく、読み取られているファイルが正しくフォーマットされていることを確認するために、チェックとしてそこに追加する必要があります。そうでない場合は呼び出されず、そうでない場合はプログラムが終了します。

4

3 に答える 3

3

Application.Runこれは、Formctorの実行時にまだアプリケーションを開始していないことが原因である可能性があります。

一般的なスタートアップコードテンプレートは次のようになります。

Application.Run(new Form1());

その場合は、Application.Runの前にApplication.Exitを呼び出します。したがって、exitを呼び出した後、Runを効果的に呼び出すため、アプリケーションが実行されます。

于 2012-12-19T19:10:43.370 に答える
1

Application.Exit() の代わりに parseINI() 内で Form.Close() メソッドを呼び出します。

于 2012-12-19T19:08:52.340 に答える
1

メソッドはEnvironment.Exit()アプリケーションを終了し、アプリケーション スレッドを閉じます。確かに、ドキュメントから:

このプロセスを終了し、基になるオペレーティング システムに指定された終了コードを提供します。

メソッド内からアプリケーションをシャットダウンする必要があるのはなぜparseINIですか?

とにかく、MSDNページApplication.Exit()を読んでいるため、メソッド呼び出しは機能しません:

このメソッドは、すべてのスレッドで実行中のすべてのメッセージ ループを停止し、アプリケーションのすべてのウィンドウを閉じます。このメソッドは、アプリケーションを強制的に終了しません。通常、Exit メソッドはメッセージ ループ内から呼び出され、Run を強制的に返します。現在のスレッドのみのメッセージ ループを終了するには、ExitThread を呼び出します。

次に、この行をコンストラクターに追加して、アプリケーションを「実行」し、次を使用できるようにしますApplication.Exit()

Application.Run(new YourForm());

ここで興味深い議論を見つけることができます: http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

詳細については、この回答をお読みください。さらに、この重要な SO の質問を読んで、 と の違いをよりよく理解してEnvironment.Exit()くださいApplication.Exit()

于 2012-12-19T19:22:26.787 に答える