質問

私はアプリケーションを終了する必要がある状態を持っていると私はcertianフラグを設定するので、私はthis.Dispose()をコールします。

最初に私はそれが私がthis.Dispose(呼び出した後の関数を呼び出すの問題だと思った)ので、私はと呼ばれる最後のものになるようにコードを移動し、私はまだ取得パラメータが有効ではありません」「ArgumentExceptionがを未処理でした」 。」 Application.Run(新しいて、myApp()で、行

私が間違って何をしているのですか?私は道に沿って何かを逃しましたか?それともアプリケーションを閉じるには良い方法はありますか?

役に立ちましたか?

解決

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

あなたがApplication.Run(new MyForm());を使用する場合は、

、メッセージループは、メインフォームとフォームオブジェクトを使用してスレッド上に作成されます。これは、それぞれのオブジェクトへの適用に来ているのWin32メッセージを配信しようとします。フォームオブジェクトにDispose()を呼び出すときしかし、あなたはまだメッセージループを終了していません。それはあなたのフォームオブジェクトに次のメッセージを配信しようとすると、それがすでに配置されますので、失敗して例外がスローされます。あなたは、どちらかは、イベントを処理するためのフォームを尋ねると、完了した場合、その後のメッセージループを終了します(フォーム上Closeを呼び出すことによって)クローズするフォームを、要求する必要があります。他の方法(より直接的な方法は)完全に、すべての関連するフォームを閉じることになりますApplication.Exit()を呼び出すことにより、スレッドのメッセージループをシャットダウンすることです。

他のヒント

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

アプリを閉じて、これのAppDomainをアンロードしている場合のAppDomainからすべてがメモリから削除されますので、

あなたは本当に廃棄を()を呼び出す必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top