1

アプリケーションを閉じる必要があるという条件があるので、これを呼び出します。certianフラグを設定するときにDispose()を実行します。

最初は、this.Dispose()を呼び出した後、関数を呼び出す際の問題だと思ったので、コードを最後に呼び出すように移動しましたが、それでも「ArgumentExceptionが処理されませんでした」「パラメータが無効です」というメッセージが表示されます。Application.Run(new myApp();行。

私は何が間違っているのですか?途中で何かが恋しかったですか?または、アプリケーションを閉じるためのより良い方法がありますか?

4

3 に答える 3

6

Application.Exit()を使用してアプリケーションを終了してみてください。

を使用するApplication.Run(new MyForm());と、フォームオブジェクトをメインフォームとして使用してスレッド上にメッセージループが作成されます。アプリケーションに送信されるWin32メッセージをそれぞれのオブジェクトに配信しようとします。ただし、Dispose()フォームオブジェクトを呼び出すときは、まだメッセージループを終了していません。次のメッセージをフォームオブジェクトに配信しようとすると、すでに破棄されているため失敗し、例外がスローされます。(フォームを呼び出して)フォームを閉じるように要求する必要がありますClose。これにより、フォームにイベントの処理を要求し、完了したら、後でメッセージループを終了します。もう1つの方法(より直接的な方法)は、呼び出すことによってスレッド上のメッセージループを完全にシャットダウンすることApplication.Exit()です。これにより、関連するすべてのフォームが閉じられます。

于 2008-12-23T17:42:24.777 に答える
1

メイン フォームを閉じるには、this.Dispose() ではなく this.Close() を使用する必要があります。

于 2008-12-23T18:51:43.700 に答える
0

アプリを閉じてAppDomainをアンロードする場合、AppDomainのすべてがメモリから削除されるため、Dispose()を呼び出す必要はありません。

于 2008-12-23T17:42:05.323 に答える